/***** en_US/globals/javascripts/3rdparty/jquery/jquery-1.4.2.min.js *****/
/*!
 * jQuery JavaScript Library v1.4.2
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

Syn.$ = $; 
jQuery.noConflict();

if (!window.$)
{
	window.$ = Syn.$;
}
;
/***** en_US/globals/javascripts/3rdparty/jquery/class.js *****/
(function(){
  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

  // The base Class implementation (does nothing)
  this.Class = function(){};
 
  // Create a new Class that inherits from this class
  Class.extend = function(prop) {
    var _super = this.prototype;
   
    // Instantiate a base class (but only create the instance,
    // do not run the init constructor)
    initializing = true;
    var prototype = new this();
    initializing = false;
   
    // Copy the properties over onto the new prototype
    for (var name in prop) {
      // Check if we are overwriting an existing function
      prototype[name] = typeof prop[name] == "function" &&
        typeof _super[name] == "function" && fnTest.test(prop[name]) ?
        (function(name, fn){
          return function() {
            var tmp = this._super;
           
            // Add a new ._super() method that is the same method
            // but on the super-class
            this._super = _super[name];
           
            // The method only need to be bound temporarily, so we
            // remove it when we are done executing
            var ret = fn.apply(this, arguments);       
            this._super = tmp;
           
            return ret;
          };
        })(name, prop[name]) :
        prop[name];
    }
   
    // The dummy class constructor
    function Class() {
      // All construction is actually done in the init method
      if ( !initializing && this.init )
        this.init.apply(this, arguments);
    }
   
    // Populate our constructed prototype object
    Class.prototype = prototype;
   
    // Enforce the constructor to be what we expect
    Class.constructor = Class;

    // And make this class extendable
    Class.extend = arguments.callee;
   
    return Class;
  };
})();
;
/***** en_US/globals/javascripts/3rdparty/jquery/plugins/jquery.cookie.js *****/
(function($){

var jQuery = $; 

/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

})(Syn.$);
;
/***** en_US/globals/javascripts/3rdparty/json/json.js *****/
/*** $Id$ ***/
function json(){}
function json_init()
{
  var m = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' };
  var s = new Object();

  s['boolean'] = function (x) { return String(x); };
  s['null'   ] = function (x) { return "null";    };
  s['number' ] = function (x) { return isFinite(x) ? String(x) : 'null'; };
  s['array'  ] = function (x)
  {
    var a = ['['], b, f, i, l = x.length, v;
    for (i = 0; i < l; i += 1) {
      v = x[i];
      f = s[typeof v];
      if (f) {
        v = f(v);
        if (typeof v == 'string') {
         if (b) {
            a[a.length] = ',';
          }
          a[a.length] = v;
          b = true;
        }
      }
    }
    a[a.length] = ']';
    return a.join('');
  };

  s['object'] = function (x) {
    if (x) {
      if (x instanceof Array) return s.array(x);
      var a = ['{'], b, f, i, v;
      for (i in x) {
        v = x[i];
        f = s[typeof v];
        if (f) {
          v = f(v);
          if (typeof v == 'string') {
            if (b) a[a.length] = ',';
            a.push(s.string(i), ':', v);
            b = true;
          }
        }
      }
      a[a.length] = '}';
      return a.join('');
    }
    return 'null';
  };

  s['string'] = function (x) {
    if (/[\"\\\x00-\x1f]/.test(x)) {
      x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
        var c = m[b];
        if (c) return c;
        c = b.charCodeAt();
        return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
      });
    }
    return '"' + x + '"';
  };

  json.serialize = function (obj)
  {
    obj = obj || false;
    return s[ typeof(obj) ](obj);
  };

  json.deserialize = json.unserialize = function (str)
  {
    try
    {
      return (/^(\"(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(str)) && eval('(' + str + ')');
    }
    catch (e)
    {
      return false;
    }
  };
}

json_init();
;
/***** en_US/globals/javascripts/framework/synjquery.js *****/
(function($){

var jQuery = $;
var bind_original = jQuery().bind;
var window_loaded = false;
var load_original = jQuery().load;

jQuery.fn.extend(
{
	/**
	 * Synacor extensions to the load method
	 */
	load: function()
	{
		// Never trigger window load if Gomez
		if ( navigator && navigator.userAgent && navigator.userAgent.match(/gomez/i) ) 
		{
			return this;
		}

		return load_original.apply(this,arguments);
	},

	/**
	 * Synacor extensions to the bind method
	 */
	bind: function()
	{
		var args = arguments;
		var self = this;

		if (args[0] === "load")
		{
			// Never trigger window load if Gomez
			if ( navigator && navigator.userAgent && navigator.userAgent.match(/gomez/i) ) 
			{
				return this;
			}
		
			return bind_original.apply(this,args);
		
		}
		else if ( args[0] === "later" )
		{
			var ucb;

			if ( typeof args[2] === 'function' )
			{
				ucb = args[2];
			}
			else
			{
				ucb = args[1] || (function(){});
			}

			if (window_loaded === true)
			{
				self.each( function()
				{
					ucb.apply( this );
				});
			}
			else
			{
				var cvalues = {};

				cvalues.timer = function()
				{
					$(window).unbind( 'load', cvalues.onload );
					self.each( function()
					{
						ucb.apply( this );
					});
					window_loaded = true;
				};

				cvalues.onload = function()
				{
					clearTimeout(cvalues.tid);
					self.each( function()
					{
						ucb.apply( this );
					});
					window_loaded = true;
				};

				cvalues.tid = setTimeout( cvalues.timer, 5000 );
				$(window).bind( 'load', cvalues.onload );
			}
		}
		else
		{
			bind_original.apply(self,args);
		}

		return self;
	},

	/**
	 * Wrapper over bind that enables you to connect events to objects, not just callbacks
	 *
	 * @param type {String|Object} Either an event type (click,focus,etc), or a hash map of type: [obj , method [, args]]
	 * @param obj {Object} The object you want to bind the event to
	 * @param method {String|Function} Either a string method name or function reference to call on obj
	 * @param args {Array} Optional arguments to pass to the callback (instead of the default ones)
	 */
	connect: function( type, obj, method, args )
	{
		return this.each(function()
		{
			var fstore, ccache;

			var f = function(myobj, mymethod, myargs)
			{
				return function()
				{
					var a = myargs || [this].concat(jQuery.makeArray(arguments));
					var r = (typeof mymethod == 'string' ? myobj[mymethod].apply(myobj, a) : mymethod.apply(myobj, a));
					return typeof r == 'boolean' ? r : false;
				};
			};

			if (typeof type == 'string')
			{
				ccache = jQuery.data(this, 'connect:' + type) || [];
				fstore = f.call(this, obj, method, args);
				ccache.push([obj, method, fstore]);
				jQuery.data(this, 'connect:' + type, ccache);
				$(this).bind(type, fstore);
			}
			else if(typeof type == 'object')
			{
				var objMap = {};
				for (var e in type)
				{
					if (typeof e == 'string')
					{
						ccache = jQuery.data(this, 'connect:' + e) || [];
						fstore = f.apply(this, type[e]);
						ccache.push([type[e][0], type[e][1], fstore]);
						jQuery.data(this, 'connect:' + e, ccache);
						objMap[e] = fstore;
					}
				}
				$(this).bind(objMap);
			}
		});
	},

	/**
	 * Disconnect your connected events from the target object
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to disconnect the event from
	 * @param method {String|Function} Either a string method name or function that you used in your connect
	 */
	disconnect: function( type, obj, method )
	{
		return this.each(function()
		{
			var ccache = jQuery.data(this,'connect:'+type) || [];
			var hdlrs  = [];
			var ncache = [];
			var elmt   = this;

			jQuery.each(ccache, function(i,rec)
			{
				if (rec[0]==obj && rec[1]==method)
				{
					hdlrs.push(rec[2]);
				}
				else
				{
					ncache.push(rec);
				}
			});

			jQuery.each(hdlrs, function(i,hdlr)
			{
				$(elmt).unbind(type,hdlr);
			});

			jQuery.data(this,'connect:'+type,ncache.length ? ncache : false);

		});
	},

	/**
	 * Wrapper over live that enables you to connect events to objects, not just callbacks
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to bind the event to
	 * @param method {String|Function} Either a string method name or function reference to call on obj
	 * @param args {Array} Optional arguments to pass to the callback (instead of the default ones)
	 */
	liveConnect: function( type, obj, method, args )
	{
		var f = function()
		{
			var a = args || [this].concat(jQuery.makeArray(arguments));
			var r = (typeof method == 'string' ? obj[method].apply(obj, a ) : method.apply(obj, a ));
			return typeof r == 'boolean' ? r : false;
		};

		var cacheid = 'liveconnect:'+type+':'+this.selector;
		var ccache  = jQuery.data(window,cacheid) || [];
		ccache.push([obj,method,f]);
		jQuery.data(window,cacheid,ccache);
		$(this.selector).live(type, f);
		return this;
	},

	/**
	 * Disconnect your live connected events from the target object
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to disconnect the event from
	 * @param method {String|Function} Either a string method name or function that you used in your connect
	 */
	liveDisconnect: function ( type, obj, method )
	{
		var cacheid= 'liveconnect:'+type+':'+this.selector;
		var ccache = jQuery.data(window,cacheid) || [];
		var hdlrs  = [];
		var ncache = [];
		var elmt   = this;

		jQuery.each(ccache, function(i,rec)
		{
			if (rec[0]==obj && rec[1]==method)
			{
				hdlrs.push(rec[2]);
			}
			else
			{
				//Dont kill it, add it back to the cache for later
				ncache.push(rec);
			}
		});

		jQuery.each( hdlrs, function(i,hdlr)
		{
			$(elmt).die(type,hdlr);
		});

		jQuery.data(window,cacheid, ncache.length ? ncache : false);
		return this;
	},

	/**
	 * Test whether x and y are on this jquery element
	 *
	 * @param x {Number} The x position
	 * @param y {Number} The y position
	 * @return {Boolean} True if it hits, false if it doesn't
	 */
	hitTest: function (x,y)
	{
		var o  = this.getPosition();
		var ox = o.left;
		var oy = o.top;
		var w  = this[0].offsetWidth;
		var h  = this[0].offsetHeight;
		var ex = ox+w;
		var ey = oy+h;

		return ( x >= ox && y >= oy && x <= ex && y <= ey ) ? true : false;
	},

	/**
	 * Get the left and top positions for this element, essentially the x,y coordinates
	 *
	 * @return {Object} Left and Top coordinates
	 */
	getPosition: function ()
	{
		return this.eq(0).position();
	},

	/**
	 * Replace this dom element with html content
	 *
	 * @param value {String} The content you want to replace this dom element with
	 */
	replaceWith: function( value )
	{
		return this.each( function ()
		{
				var e = $(this);
				var p = e.parent();
				var s = e.prev();
				e.remove();

				if (s[0])
				{
					s.after(value);
				}
				else
				{
					p.prepend(value);
				}
		});
	},

	/**
	 * Search for html elements inside this selector and make image tags with png's transparent using IE filter hack
	 */
	fixPngImage: function()
	{
		if (!$.browser.msie || parseInt($.browser.version) >= 7.0 )
		{
			return this;
		}

		this.filter('[src$=png]').each( function ()
		{
			var i = $(this);
			i.after( '<div style="display:block; width: '+i.width()+'px; height: '+ i.height() +'px; padding: 0px; margin: 0px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + i.attr('src') + '\', sizingMethod=\'image\');" ></div>').hide();
		});

		return this;
	},

	/**
	 * Search for html elements inside this selector and fix background png's using IE filter hack
	 */
	fixPngBackground: function()
	{
		if (!$.browser.msie || parseInt($.browser.version) >= 7.0 )
		{
			return this;
		}

		return this.each( function()
		{
			this.style.backgroundImage = '';
			var m = this.currentStyle.backgroundImage.match(/^url\("([^"]+)"\)/);

			if (!m || !m[1])
			{
				return;
			}

			var sz = this.currentStyle.backgroundRepeat == 'no-repeat' ? 'crop' : 'scale';
			this.style.backgroundImage = 'none';
			this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+m[1]+'", sizingMethod="'+sz+'")';
		});
	},

	/**
	 * Fixes the png background images on hover for IE6.  Will add a "hover" class to the element on mouseover.
	 * @return {Object} returns itself so it can be chainable
	 */
	fixHoverPngBackground: function()
	{
		if ($.browser.msie && $.browser.version < 7)
		{
			var fn = function()
			{
				this.style.backgroundImage = "";
				$(this).toggleClass("hover").fixPngBackground();
			};

			return this.each(function()
			{
				$(this).mouseover(fn).mouseout(fn).fixPngBackground();
			});
		}
		return this;
	},

	/**
	 * Sits idle before returning control.  Works well in chain.
	 */
	idle: function(time, callback)
	{
		return this.animate({delay: 1}, time, callback);
	},

	/**
	 * Displays a comment in place of its parent.
	 * This replaces the parent container.  For example: <span class="parent"><!-- <img /> --></span> becomes <img />
	 * There should not be any space between around the comment.
	 * Bad:
	 *    <span class="comment">
	 *       <!-- <img /> -->
	 *    </span>
	 * Good:
	 *    <span class="comment"><!-- <img /> --></span>
	 * @return {Object} returns itself
	 */
	showComment: function()
	{
		return this.each(function()
		{
			var child = this.firstChild;
			if (child.nodeType === 8) // 8 is a comment node
			{
				this.innerHTML = ''; // Fixes IE sometimes breaking with replaceWith() call
				$(this).replaceWith(child.nodeValue);
			}
		});
	}
});

/**
 * Shortcut for 'later', simply
 * route the callback to .bind()
 */
jQuery.fn.later = function(fn) {
	return fn ? this.bind('later', fn) : this.trigger('later');
};
if (jQuery.attrFn)
{
	jQuery.attrFn.later = true;
}

/**
 * Bind a function to run on 'later',
 * to make sure it always runs.
 */
jQuery(window).later(jQuery.noop);

})(Syn.$);

(function($){
var jQuery = $;

jQuery.extend({
	/**
	 * Dynamically loads a stylesheet
	 * @param {String} url
	 */
	getStyle: function(url)
	{
		if (url && typeof jQuery._syn.loaded_ui[url] == "undefined")
		{
			jQuery._syn.loaded_ui[url] = true;
			var ts = (new Date()).getTime();
			url += ((url.match(/\?/)) ? '&' : '?')+'_='+ts;
			$("head").eq(0).append('<link href="'+url+'" rel="stylesheet" type="text/css" />');
		}
	},

	/**
	 * Dynamically loads an array of stylesheets optionally prepending a prefix
	 * @param {Array} urls
	 * @param {String} prefix
	 */
	getStyles: function(urls, prefix)
	{
		urls_array = $.makeArray(urls);
		$.each(urls_array, function(i, url)
		{
			$.getStyle(prefix+url);
		});
	},

	/**
	 * Dynamically removes a stylesheet
	 * @param {String} url
	 */
	removeStyle: function(url)
	{
		if (url)
		{
			if (typeof jQuery._syn.loaded_ui[url] != "undefined")
			{
				jQuery._syn.loaded_ui[url] = null;
				delete jQuery._syn.loaded_ui[url];
			}

			// Find the timestamped url and remove it from dom
			url += ((url.match(/\?/)) ? '&' : '?')+'_';
			var ts_url = $("head").find("link[href^="+url+"]").attr('href');
			$("head").find("link[href="+ts_url+"]").remove();
		}
	},

	/**
	 * Dynamically removes an array of stylesheets optionally prepending a prefix
	 * @param {Array} urls
	 * @param {String} prefix
	 */
	removeStyles: function(urls, prefix)
	{
		urls_array = $.makeArray(urls);
		$.each(urls_array, function(i, url)
		{
			$.removeStyle(prefix+url);
		});
	},

	/**
	 * Dynamically loads a number of scripts, optionally calling the callback once all scripts have been loaded (or failed)
	 * @param {Array} urls
	 * @param {Function} callback
	 * @param {String} prefix
	 */
	getScripts: function(urls, callback, prefix)
	{
		if (urls.length == 0)
		{
			callback();
			return;
		}

		var prefix = (prefix) ? prefix : "";
		urls = $.makeArray(urls);

		if (jQuery._syn.loaded_ui[prefix+urls[0]])
		{
			$.getScripts(urls.slice(1), callback, prefix);
		}
		else
		{
			$.getScript(prefix+urls[0], function()
			{
				jQuery._syn.loaded_ui[prefix+urls[0]] = true;
				$.getScripts(urls.slice(1), callback, prefix);
			});
		}
	}
});

})(Syn.$);

(function($){

	var jQuery = $;
	var ajax_original = jQuery.ajax;

	jQuery.extend({

		ajax: function(options)
		{
			if (!options.xhr)
			{
				options.xhr = function() {
					try
					{
						return new window.ActiveXObject('Msxml2.XMLHTTP');
					}
					catch (e1)
					{
						try
						{
							return new window.ActiveXObject('Microsoft.XMLHTTP');
						}
						catch (e2)
						{
							return (typeof window.XMLHttpRequest !== 'undefined') && new window.XMLHttpRequest();
						}
					}
				};
			}

			if (!options.jsCache)
			{
				return ajax_original(options);
			}

			var param_key = (typeof(options.data) == 'string') ? options.data : json.serialize(options.data || {});
			var cacheid = options.url + '|' + param_key;
			var cache   = jQuery.data(window, cacheid);
			var success_orig = options.success;

			if ( cache )
			{
				success_orig.apply(options,cache);
				return;
			}

			options.success = function(req,status)
			{
				jQuery.data( window, cacheid, [req,status] );
				this.success = success_orig;
				success_orig.call(this,req,status);
			}

			return ajax_original(options);
		}

	});

})(Syn.$);

Syn.$._syn = {
	loaded_ui: []
};


;
/***** en_US/globals/javascripts/framework/syncomm.js *****/
/*global Class,json */
(function($){

/**
 * The ajax webservices communication class.
 * @constructor
 */
Syn.Comm = Class.extend(
{

	/**
	 * Initialize the portal webservices class. This is called automatically by the default constructor.
	 * @member Syn.Comm
	 * @param url {String} Location of portal webservices
	 */
	init: function (url)
	{
		this.url = url;
		this.requests = {};
		this.nextRequestId = 0;
	},

	/**
	 * Call a webservice on the server
	 * @member Syn.Comm
	 * @param classname {String} The class on the server you wish to call
	 * @param method {String} The method you wish to call on classname
	 * @param data {Mixed} Any data structure you want to serialize and pass to the server
	 * @param cb1 {Function|Object} Can be either a function or an object. If a function is passed, this will be called with the result. If an object is passed, the object will be the target 'this' of the cb2 method.
	 * @param cb2 {String|Function} The method to call on cb1 if an object was passed. Can be a string method name or a function reference.
	 */
	call: function (classname,method,data,cb1,cb2)
	{
		var callBackObj = {};

		if (typeof cb1 == 'function' )
		{
			callBackObj.callback = cb1;
			callBackObj.cb_obj   = false;
		}

		else if ( typeof cb1 == 'object' )
		{
			callBackObj.cb_obj = cb1;
			callBackObj.callback = cb2;
		}

		var robj = {
			'class'  : classname,
			'method' : method,
			'data'   : data
		};

		if (cb1)
		{
			this.requests[this.nextRequestId] = $.ajax({
				type: "POST",
				url: this.url,
				data: json.serialize(robj),
				contentType: 'application/json',
				success: this.onSuccessFunc(callBackObj, this.nextRequestId)
			});
			this.nextRequestId++;
		}
		else
		{
			return json.deserialize($.ajax({
				type: "POST",
				async: false,
				url: this.url,
				data: robj,
				contentType: 'application/json'
			}).responseText);
		}
	},

	/**
	 * Cancels all outstanding requests in this.requests and deletes them from this.requests
	 * @member Syn.Comm
	 */
	cancelAll: function()
	{
		for (var requestId in this.requests)
		{
			// We need to make sure there is a request to cancel
			if(typeof this.requests[requestId] != 'undefined')
			{
				this.requests[requestId].abort();
				this.requests[requestId]=null;
				delete this.requests[requestId];
			}
		}
	},

	/**
	 * Returns a function that is used when a webservice call is completed
	 * @member Syn.Comm
	 * @param callBackObj {Object} The object containing the callback data for this request
	 * @param requestId {Number} The number of the request coming from this object (1...n)
	 */
	onSuccessFunc: function(callBackObj, requestId)
	{
		var that = this;

		/**
		* The function that actually occurs when a request is complete.
		* @member Syn.Comm
		* @param responseText {String} The response text for a request
		* @param responseMessage {String} The response message for a request
		*/
		return function onSuccess(responseText, responseMessage)
		{
			var result = $.parseJSON(responseText);

			if ( callBackObj.cb_obj )
			{
				if (typeof callBackObj.callback === "string")
				{
					callBackObj.cb_obj[callBackObj.callback](result);
				}
				else
				{
					callBackObj.callback.call(callBackObj.cb_obj, result);
				}
			}
			else
			{
				callBackObj.callback(result);
			}

			//The request is done, delete the request from this Syn.Comm instance
			that.requests[requestId]=null;
			delete that.requests[requestId];
		};
	}
});

})(Syn.$);
;
/***** en_US/globals/javascripts/framework/syncomponent.js *****/
(function($){

/**
 * Create a component instance.
 * @constructor
 */
Syn.Component = Class.extend(
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * In the config object, the following attributes are generally supplied
	 *   - {String} type The type of this component, eg (horoscope,movies,etc)
	 *   - {String} uid (v1) The unique identifier for this component instance
	 *   - {String} event_id (v2) The unique identifier for this component instance
	 *   - {String} ajaxtoken A data packet needed to reconstruct the component via webservices
	 * @member Syn.Component
	 * @param {Object} config
	 */
	init: function (config)
	{
		this.type      = config['type'] || '';
		this.uid       = config['uid'];
		this.config    = config;
		this.uid_esc   = this.uid.replace(/(:|\|)/g,'\\$1');
		this.ajaxtoken = config['ajaxtoken'];
		this.comp      = $('#'+this.uniqueKey());
		this.config['__i18n'] = this.config['__i18n'] ? this.config['__i18n'] : {};
		this.target_action = config['target_action'] || '';
		this.delayed_load = config['delayed_load'] || false;

		if (this.delayed_load)
		{
			this.showLoading();
			this.bindDelayedLoad();
		}
	},

	/**
	 * Bind the delayed load component to either:
	 *   a) $(window).later for components in-viewport
	 *   b) $(window).scroll for others
	 */
	bindDelayedLoad: function()
	{
		var self = this,
			scrolling = false;

		// Component is in the viewport
		if (self.uniqueElmt().filter(':in-viewport').length > 0)
		{
			self.uniqueElmt().bind('later', function() {
				self.submit({'action': self.target_action});
			});
		}
		// Component is outside the viewport
		else
		{
			$(window).scroll(function() {
				scrolling = true;
			});

			// Prevent scroll handlers from stacking
			(function delay_submission () {
				setTimeout(function() {
					var $elmt;
					if (scrolling)
					{
						scrolling = false;
						// If the component is now in the viewport, make ajax request
						$elmt = self.uniqueElmt().filter(':in-viewport');
						if ($elmt.length > 0)
						{
							self.submit({'action': self.target_action});
						}
						else
						{
							delay_submission();
						}
					}
					else
					{
						delay_submission();
					}
				}, 250);
			})();
		}
	},

	/**
	 * Get the instance uid
	 * @member Syn.Component
	 * @return {String} The uid
	 */
	getUid: function ()
	{
		return this.uid;
	},

	/**
	 * Get the dom identifier for this simple 'key'. The key value gets expanded to the id of this unique instance of the component.
	 * @member Syn.Component
	 * @param {String} key A simple identifier that appears in your component
	 * @param {bool} no_escape Whether or not to escape the : in the key
	 * @return {String} The expanded per-instance identifier
	 */
	uniqueKey: function (key, no_escape)
	{
		var prefix = this.type ? this.type+'_' : '';

		if (no_escape)
		{
			return prefix+(key!=null ? key+'_' : '')+this.uid;
		}

		return prefix+(key!=null ? key+'_' : '')+this.uid_esc;
	},

	/**
	 * Return the jquery object for this component instance for this simple key
	 * @member Syn.Component
	 * @param {String} key A simple identifier that appears in your component
	 * @return {Object} The jquery object
	 */
	uniqueElmt: function (key)
	{
		return $('#'+this.uniqueKey(key));
	},

	/**
	 * Returns the jquery object for the entire component
	 * @return {Object} The component jquery object
	 */
	container: function ()
	{
		return this.uniqueElmt();
	},

	/**
	 * Submit some form elements via ajax to the component webservice. Will result in the component reloading with new settings.
	 * @param {Array} vals An array of form values to submit
	 * @param {Array} extra_opts
	 */
	submit: function (vals, extra_opts)
	{
		extra_opts = extra_opts||{};
		// Framework request
		if (this.config['uri'])
		{
			var self = this;
			var data = {};
			for (i in vals)
			{
				data[i] = vals[i];
			}

			data['_uri']        = data['_uri'] || this.config['uri'];
			data['_parent_uri'] = data['_parent_uri'] || this.config['parent_uri'];
			data['_root_url']   = Syn.Config.Framework.PortalRoot;
			data['_client_uri'] = 'client://client_config/'+Syn.Config.Framework.Client+'/';
			data['_site_uri']   = 'site://site_config/'+Syn.Config.Framework.Site+'/';
			data['_page_uri']   = Syn.Config.Framework.Page;
			data['_session']    = Syn.Config.Framework.Session;
			data['_user_id']    = Syn.Config.Framework.UserId;
			data['_auth_token'] = Syn.Config.Framework.AuthToken;

			if (extra_opts['render_wrapper'])
			{
				data['_render_wrapper'] = 1;
			}

			if (extra_opts['app_server'] || extra_opts['app_server_url'] || this.delayed_load || Syn.Config.Framework.Syndicated)
			{
				data._is_jsonp = 1;

				var url = extra_opts['app_server_url'] || ( Syn.Config.Framework.Syndicated ? Syn.Config.Framework.PortalRoot : Syn.Config.Framework.AppServer );

				rq = {
					'url':         url + '_/',
					'contentType': 'application/json',
					'success':     function (x){ self.result(x); },
					'dataType':    'jsonp',
					'data':        data
				};
			}
			else
			{
				 rq = {
					'url':         Syn.Config.Framework.PortalRoot + '_/',
					'type':        'post',
					'contentType': 'application/json',
					'success':     function (x){ self.result(x); },
					'dataType':    'json',
					'data':        json.serialize(data)
				};
			}

			if (extra_opts.cache)
			{
				rq.jsCache = true;
			}

			$.ajax(rq);
			return;
		}

		// Perform the Troy ajax request
		if (!this.ajaxtoken)
		{
			return;
		}

		var packet = {'type':this.type, 'uid':this.uid, 'ajaxtoken':this.ajaxtoken, 'prefs':vals };

		if (extra_opts && extra_opts['norender'])
		{
			packet['norender'] = true;
		}

		this.comm = new Syn.Comm(Syn.Config.WebservicesUrl);
		this.comm.call('ComponentService', 'submit', packet, this, 'result');
	},

	/**
	 * Gets a component given a uri, parent uri and vals.
	 * @member Syn.Component
	 * @param {String} component_uri A uri of the component to render
	 * @param {String} parent_uri A uri of the parent uri for the component to render
	 * @param {Object} vals The values you wish to submit to the component
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	*/
	getComponent: function(component_uri, parent_uri, vals, obj, method)
	{
		return Syn.ComponentUtils.getComponent(component_uri, parent_uri, vals, obj, method);
	},

	loadUxAssets: function(res, callback)
	{
		return Syn.ComponentUtils.loadUxAssets(res, callback);
	},

	/**
	 * The target of the ajax component webservice. Replaces the component content.
	 * @param {mixed} res The content returned from the webservice
	 */
	result: function (res)
	{
		this.hideLoading();

		/**
		 * In case a Troy AJAX call has 'norender' set to true the response will be an empty string.
		 */
		if (!res)
		{
			return;
		}

		if (typeof res == 'string' && res)
		{
			this.container().replaceWith(res);
			// Reveal all comments, just in case
			$('pre.scroll_loader').showComment();
			return;
		}

		var self = this;
		var callback = function ()
		{
			if ( res['data'] )
			{
				self.onAjaxUpdate(res['data']);
			}
			else
			{
				var repl_target = res['has_wrapper'] ? self.wrapper() : self.container();
				repl_target.replaceWith(res['content']);
				var instance = Syn.ComponentMgr.getInstanceByUid(res.init.event_id);
				self.find('pre.scroll_loader').showComment();

				if (instance && instance != self)
				{
					Syn.ComponentMgr.remove(self);
				}
			}
		};

		this.loadUxAssets(res, callback);
	},

	/**
	 * Default ajax update handler, override this in subclasses to recieve the ajax update event
	 * @param {Object} config An associative array of config params
	 */
	onAjaxUpdate: function(config)
	{
		return;
	},

	/**
	 * Find a jquery element inside the component container
	 * @param {String} selector The jquery selector to execute inside the component container
	 * @return {Object} The jquery response object
	 */
	find: function(selector)
	{
		var selectors, i,
		    unique_selector = '#' + this.uniqueKey(),
		    return_selector = [],
		    trim = function(str) {
			    return str.replace(/^\s+|\s+$/g, '');
		    };

		// Test for presence of selector first
		selector = typeof selector === 'string' ? trim(selector) : "";
		if (selector)
		{
			selectors = selector.split(',');
			for (i = 0; i < selectors.length; i++)
			{
				selectors[i] = trim(selectors[i]);
				if (selectors[i])
				{
					return_selector.push(unique_selector + ' ' + selectors[i]);
				}
			}
			return $(return_selector.join(', '));
		}
		// No selector, just return jquery element for the container
		else
		{
			return $(unique_selector);
		}
	},

	/**
	 * Show the loading indicator.
	 * Options can be specified in the opts parameter.  The following opts are accepted:
	 *    target: {Object} A jQuery object where the loading layer will reside inside. [optional]
	 *    class: {String} An additional class name to use on the loading layer. [optional]
	 *
	 * @param {Object} opts Options for the loading layer
	 */
	showLoading: function(opts)
	{
		opts = opts || {};
		var loading = this.uniqueElmt("loading");
		var target  = opts["target"] || this.container();

		if (!loading.size())
		{
			loading = $("<div>").attr("id", this.uniqueKey("loading", true))
			                    .addClass("loading");

			// If the user specified an additional class, add it as well.
			if (opts["class"])
			{
				loading.addClass(opts["class"]);
			}
		}

		loading.css({
			width: target.outerWidth(),
			height: target.outerHeight()
		}).show();

		target.prepend(loading);

		return true;
	},

	/**
	 * Hide the loading indicator
	 */
	hideLoading: function()
	{
		this.uniqueElmt('loading').hide();
	},

	/**
	 * Loads scripts asynchronously and calls a callback when all scripts are done loading.
	 *
	 * @param scripts {Array|String} Array  of javascripts to load or String (for 1 js file to load)
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.
	 * @param number {int} The script index to start loading (Not required; defaults to 0)
	 * @member Syn.Component
	 */
	loadJs: function(scripts, obj, method, args, number)
	{
		var that = this;
		scripts = (typeof scripts == "string") ? [scripts] : scripts;
		number = number || 0;
		args = args || [];
		var portal_root = Syn.Config.Framework ? Syn.Config.Framework.PortalRoot : Syn.Config.PortalRoot;

		$.getScript(portal_root+'js/'+scripts[number], function()
		{
			//Load the next one if we can
			if ((number+1) < scripts.length)
			{
				that.loadJs(scripts, obj, method,args, number+1);
			}
			else
			{
				//Do our callback now that we are done!
				(typeof method == 'string') ? obj[method].apply(obj, args ) : method.apply(obj, args );
			}
		});
	},

	/**
	 * Get the jquery handle to the component wrapper
	 * @return {Object} The wrapper container jquery object or the component container if no wrapper exists.
	 */
	wrapper: function()
	{
		// The Framework wrapper
		if (this.uniqueElmt('wrapper').length)
		{
			return this.uniqueElmt('wrapper');
		}

		/* Note: the wrap_sel selector has to iterate sub-nodes bcs the id's are not actually
			 unique for wrappers. :( Bad Troy, Bad.
		*/
		var res = this.uid.match(/^(\d+)[\w\:]*_([\w\d]+)$/);
		var wrap_sel = '#body_col_'+ res[1] +' div.comp_container[id=syn_comp_' + res[2] + ']';
		return $(wrap_sel).length ? $(wrap_sel) : this.container();
	},

	/**
	 * Remove the component and wrapper from the page.
	 */
	remove: function(options)
	{
		options = options || [];

		if ( Syn.ComponentMgr )
		{
			Syn.ComponentMgr.remove(this);
		}

		var target = options['target'] == 'wrapper' ? this.wrapper() : this.container();

		if (options['fade_out'])
		{
			target.fadeOut(options['fade_out'], function(){ $(this).remove(); } );
		}
		else
		{
			target.remove();
		}
	},

	/**
	 * Popup a component
	 * @param options {Object} Options
	 {
		 * component {Object | String} (Uri/avs if string)(Optional)
		 * - uri {String} Component Uri To Popup
		 * - params {Object} parameters passed to the component
		 * title {String} Title of component (Optional, overrides popup component title)
		 * layout {String} Layout of popup component, ie controls width (Optional, single|double|triple) 300px,612px, 960px) If not provided, defaults to single)
		 * css_class {String} CSS Class of popup component (Optional, If not provided, uses name of popup component)
		 * show_loading {String} true|false (Optional)
		 * draggable: true|false (Optional)
		 * closeable: true|false (Optional)
		 * resizable: true|false (Optional)
		 * modal: true|false (Optional)
		 * close_on_blur: true|false (Optional)
		 * show_title: true|false (Optional)
		 * center: "screen"|"component"| "#element_id" (Optional)
		 * max_popups: 1,2,3... (Optional) Defaults to 1)
		 * top: xxx (Optional)
		 * left: xxx (Optional)
		 * width: xxx (Optional)
		 * height: xxx (Optional)
	 }
	 *
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	 * @param on_close {Object} Options Callback called when the pop up window is closed
	 {
		 * obj {Object} The object that holds callback method.
		 * method {String|Function} Either a string method name or function used for callback.
		 * args {Array} Optional args for the callback.  (Optional)
	 }
	 */
	popup: function(options, obj, method, args, on_close)
	{
		var that = this;
		var load_fn = function()
		{
			if (!that.syn_popup)
			{
				that.syn_popup = new Syn.Popup();
			}

			//If we want to center the popup over the component OR we have not specified a center + left + top
			if (options && options['center'] && options['center'] == 'component'
			 || (options && !options['center'] && !options['left'] && !options['top']))
			{
				options['center'] = '#'+that.uniqueKey();
			}

			that.syn_popup.popup(options, obj, method, args, on_close);
		};


		if (this.config['uri'])
		{
			//Load in Syn.Popup framework version
			$.getScripts(["en_US/globals/javascripts/framework/synpopup.js"], load_fn, Syn.Config.Framework.AssetsRoot);
		}
		else
		{
			//Load in Syn.Popup legacy
			$.getScripts(["framework/synpopup.packed.js"], load_fn, Syn.Config.PortalRoot+"js/");
		}
	},

	/**
	 * Live connects a tags for link submissions via ajax.
	 * @param {String|Object} sel
	 * @param {String|Function} method
	 */
	hrefToAjax: function(sel, method, extra_opts)
	{
		var obj = sel;
		if (typeof(obj) == "string")
		{
			obj = this.container().find(sel);
		}

		var self = this;
		obj.live("click", function()
		{
			if (method)
			{
				var a = [this];
				(typeof(method) == "string") ? self[method].apply(self, a) : method.apply(self, a);
			}

			var params = self.queryStrToObject($(this).attr("href"));
			self.submit(params,extra_opts);

			return false;
		});
	},

	/**
	 * Converts a query string to an object.
	 * @param {String} query_string
	 * @return {Array}
	 */
	queryStrToObject: function(query_string)
	{
		// query_string can be just a query string, or it can be a URL.  If it's a URL
		// with no query string, return an empty object.
		if (query_string.match(/^https?:\/\//) && query_string.indexOf("?") === -1)
		{
			return {};
		}

		var qs = query_string.match(/(?:^|\?)([^?]+)#?(?=#|$)/);
		qs = (qs) ? qs[1] : '';

		var params = qs.split(/&/);

		var arr = {};
		for (i = 0; i < params.length; ++i)
		{
			// PHP and JavaScript encode spaces differently.  Actually, PHP encodes spaces differently
			// as well.  http_build_query() in PHP encodes spaces as + (whereas rawurlencode() does %20).
			// JavaScript on the other hand encodes spaces a %20 only and doesn't encode the plus.  To fix this
			// we'll manually decode the plus as a space and then decode the rest.
			var keyvalue = params[i].split(/=/);
			var key = keyvalue[0];
			key = key.replace(/\+/g, ' ');
			key = decodeURIComponent(key);

			var value = keyvalue[1];
			if (value)
			{
				value = value.replace(/\+/g, ' ');
				value = decodeURIComponent(value);
			}
			arr[key] = (value) ? value : '';
		}

		return arr;
	},

	encodeDomId: function(str)
	{
	  return str.replace(/\W/g, function (char)
	  {
		return '-'+char.charCodeAt(0).toString(16);
	  });
	},

	decodeDomId: function(str)
	{
	  return str.replace(/\-([0-9a-f]{2})/ig, function (str,hex)
	  {
		return String.fromCharCode(parseInt(hex,16));
	  });
	},

	L: function(str)
	{
		return this.config['__i18n'][str] ? this.config['__i18n'][str] : str;
	},

	/**
	 * Open a link in a new window
	 * @param link {Object} JQuery link object
	 * @param options {Object} Window name and features
	 */
	newWindow: function(link, options)
	{
		if (link.href)
		{
			var name='',
			feat = '';

			if (options)
			{
				if (options.name)
				{
					name = options.name;
				}
				if (options.features && $.isPlainObject(options.features))
				{
					for (var key in options.features)
					{
						if (options.features.hasOwnProperty(key))
						{
							feat += key + '=' + options.features[key] + ',';
						}
					}
					feat = feat.substring(0, feat.length - 1);
				}
			}

			window.open(link.href, name, feat);
			return false;
		}

		return true;
	}
});

})(Syn.$)
;
/***** en_US/globals/javascripts/framework/synpopup.js *****/
(function($){

/**
 * Create a Popup instance.
 * @constructor
 */
Syn.Popup = Class.extend(
{
	/**
	 * Initialize the Popup class. This is called automatically by the default constructor.
	 * @member Syn.Popup
	 */
	init: function ()
	{
		if (typeof Syn.Popup.popup_instance_uid == 'undefined')
		{
			Syn.Popup.popup_instance_uid = 0;
		}
		this.popup_instance_uid = Syn.Popup.popup_instance_uid++;
		this.popup_counter = 0;
		this.current_popup = false;
	},

	/**
	 * Popup a component
	 * @param options {Object} Options
	 {
		 * component {Object | String} (Uri/avs if string)(Optional)
		 * - uri {String} Component Uri To Popup
		 * - params {Object} parameters passed to the component
		 * title {String} Title of component (Optional, overrides popup component title)
		 * layout {String} Layout of popup component, ie controls width (Optional, single|double|triple) 300px,612px, 960px) If not provided, defaults to single)
		 * css_class {String} CSS Class of popup component (Optional, If not provided, uses name of popup component)
		 * show_loading {String} true|false (Optional)
		 * draggable: true|false (Optional)
		 * closeable: true|false (Optional)
		 * resizable: true|false (Optional)
		 * modal: true|false (Optional)
		 * close_on_blur: true|false (Optional)
		 * show_title: true|false (Optional)
		 * center: "screen"|"#element_id" (Optional)
		 * max_popups: 1,2,3... (Optional) Defaults to 1)
		 * top: xxx (Optional)
		 * left: xxx (Optional)
		 * width: xxx (Optional)
		 * height: xxx (Optional)
	 }
	 *
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	 * @param on_close {Object} Options Callback called when the pop up window is closed
	 {
		 * obj {Object} The object that holds callback method.
		 * method {String|Function} Either a string method name or function used for callback.
		 * args {Array} Optional args for the callback.  (Optional)
	 }
	 */
	popup: function(options, obj, method, args, on_close)
	{
		var that = this;
		var options = options || {};
		var args = args || [];
		options['max_popups'] = options['max_popups'] || 1;
		options['title'] = options['title'] || "";
		options['component_zone'] = 'zone://popup/'+(this.popup_instance_uid)+"/"+this.popup_counter++;
		options['show_loading'] = (typeof options['show_loading'] != 'undefined') ? options['show_loading'] : true;
		var callback_fn = function(result)
		{
			if (result)
			{
				if (options['show_loading'])
				{
					$('#popup_loading_indicator').remove();
				}

				if (that.popup_counter > options['max_popups'] && that.current_popup)
				{
					$(that.current_popup).remove();
				}
				//Appends popup to the end of the body
				$(document.body).append(result.content);
				that.current_popup  = $(document.body).find(".syn_popup:last")[0];

				if (typeof method == 'string')
				{
					obj[method].apply(obj, [that.current_popup].concat(args));
				}
				else if(typeof method != 'undefined' && method)
				{
					method.apply(obj, [that.current_popup].concat(args));
				}

				if (on_close)
				{
					if (!on_close['args'])
					{
						on_close['args'] = [];
					}

					var instance = Syn.ComponentMgr.getInstanceByUid(result.init.event_id);

					instance.closeCallback = function()
					{
						if (typeof on_close['method'] == 'string')
						{
							on_close['obj'][on_close['method']].apply(on_close['obj'], on_close['args']);
						}
						else if(typeof method != 'undefined' && method)
						{
							on_close['method'].apply(on_close['obj'], on_close['args']);
						}
					};
				}
			}
		};

		var left = options['left'];
		var top = options['top'];

		if (options['center'] && options['center'] == 'screen')
		{
			left = ($(window).width() / 2) + ($(window).scrollLeft()) + 'px';
			top = ($(window).height()/2) + ($(window).scrollTop()) + 'px';
		}
		else if (options['center'] && $(options['center']).length > 0)
		{
			options['parent_key'] = $(options['center']).attr('id');
			left = ($(options['center']).offset().left) + ($(options['center']).width() / 2) + 'px';
			top = ($(options['center']).offset().top) + ($(options['center']).height() / 2) + 'px';
		}

		if (options['show_loading'])
		{
			$(document.body).append('<div id="popup_loading_indicator"></div>');
			$('#popup_loading_indicator').css({'left': left,'top': top});
		}
		
		var params = (options['component'] && options['component']['params']) ? options['component']['params'] : {};
		params['popup_component'] = options['component']['uri'] ? options['component']['uri'] : options['component'] || '';
		
		//If an action parameter is specified, rename it to popup_action and delete action
		if (params['action'])
		{
			params['popup_action'] = params['action'];
			params['action'] = null;
			delete params['action'];
		}

		//Append popup parameters to params array
		for (key in options)
		{
			if (key !='component')
			{
				params['popup_'+key] = options[key];
			}
		}

		Syn.ComponentUtils.getComponent(
			'component://Synacor/Portal/Components/Popup/',
			options['component_zone'],
			params,
			this,
			callback_fn);
	}
});

})(Syn.$);
;
/***** js/tabbedcomp.js *****/
function __syn_showTabbedComponent(tab, pzi, index)
{
	var i = 0;
	var container       = document.getElementById('tabbed_component_' + pzi + '_container');
	var componentToShow = document.getElementById('tabbed_component_' + pzi + '_' + index);

	if (!container || !componentToShow)
	{
		return;
	}

	$(componentToShow).find('pre.scroll_loader').showComment();

	// Hide all other components
	for (i = 0; i < container.childNodes.length; i++)
	{
		var componentDiv = container.childNodes[i];
		if (componentDiv.style && componentDiv != componentToShow)
		{
			componentDiv.style.display = 'none';
		}
	}

	// Show the selected component
	componentToShow.style.display = 'block';
	componentToShow.className     = 'on';

	var parentList = tab.parentNode;
	// Get default class name
	var defaultClassName = '';
	for (i = 0; i < parentList.childNodes.length; i++)
	{
		var element = parentList.childNodes[i];
		if (element != tab && element.className != 'on' && element.className && element.className != 'undefined')
		{
			defaultClassName = element.className;
			break;
		}
	}
	// Deselected all tabs 
	for (i = 0; i < parentList.childNodes.length; i++)
	{
		var element = parentList.childNodes[i];

		if (element.nodeName.toLowerCase() == 'li')
		{
			element.className = defaultClassName;
		}
	}

	// Set selected tab to on
	tab.className = 'on';
}

/***** Expedia javascript functions *****/

var divs = new Array('syn_exp_travel_flight', 'syn_exp_travel_car', 'syn_exp_travel_hotel', 'syn_exp_travel_cruise');

function syn_show_exp(obj)
{
	for (var i = 0; i < divs.length; i++)
	{
		if (document.getElementById(obj) && obj == divs[i])
		{
			document.getElementById(obj).style.display='block';
		}
		
		else if(document.getElementById(divs[i]))
		{
			document.getElementById(divs[i]).style.display='none';
		}
	}
}

function syn_check_exp(obj)
{
	if (document.getElementById(obj))
	{
		document.getElementById(obj).checked=true;
	}
}
;
/***** js/synlib.js *****/
/*global ActiveXObject */
/***** Utility functions *****/

Number.prototype.NaN0 = function()
{
	return isNaN(this) ? 0 : this;
};

function Utils()
{
}

Utils.getPosition = function(e)
{
	var root_offset_y = e.offsetTop;
	if (navigator.userAgent.indexOf('MSIE') != -1)
	{
		e = e.offsetParent;
	}

	var left = 0;
	var top = 0;
	while (e.offsetParent)
	{
		left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth, 10)).NaN0() : 0);
		top += e.offsetTop  + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth, 10)).NaN0() : 0);
		e = e.offsetParent;
	}

	left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth, 10)).NaN0() : 0);
	top += e.offsetTop  + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth, 10)).NaN0() : 0);

	return {
		x: left,
		y: top + (navigator.userAgent.indexOf('MSIE') != -1 ? root_offset_y : 0)
	};
};

Utils.mouseCoords = function(ev)
{
	if (!ev)
	{
		ev = window.event;
	}

	if (ev.pageX || ev.pageY)
	{
		return {
			x: ev.pageX,
			y: ev.pageY
		};
	}
	else if (ev.clientX || ev.clientY)
	{
		return {
			x: ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
			y: ev.clientY + document.body.scrollTop + document.documentElement.scrollTop
		};
	}
	else
	{
		return {
			x: 0,
			y: 0
		};
	}
};

Utils.getMouseOffset = function(target, ev)
{
	var docPos = Utils.getPosition(target);
	var mousePos = Utils.mouseCoords(ev ? ev : window.event);
	return {
		x: mousePos.x - docPos.x,
		y: mousePos.y - docPos.y
	};
};

Utils.getPageSize = function()
{
	var pageWidth = 0, pageHeight = 0;
	if (typeof( window.innerWidth ) == 'number')
	{
		//Non-IE
		pageWidth = window.innerWidth;
		pageHeight = window.innerHeight;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		//IE 6+ in 'standards compliant mode'
		pageWidth = document.documentElement.clientWidth;
		pageHeight = document.documentElement.clientHeight;
	}
	else if (document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		pageWidth = document.body.clientWidth;
		pageHeight = document.body.clientHeight;
	}

	return {
		x: pageWidth,
		y: pageHeight
	};
};

Utils.hitTest = function(element, x, y)
{
	var pos = Utils.getPosition(element);
	var ex  = pos.x;
	var ey  = pos.y;
	var ew  = element.offsetWidth;
	var eh  = element.offsetHeight;

	return (x >= ex && x <= ex + ew && y >= ey && y <= ey + eh) ? true : false;
};

Utils.horizontalHitTest = function(element, y)
{
	var pos = Utils.getPosition(element);
	var ey  = pos.y;
	var eh  = element.offsetHeight;

	return (y >= ey && y <= ey + eh) ? true : false;
};

Utils.addListener = function(event, method, use_capture)
{
	use_capture = use_capture ? use_capture : false;

	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener(event, method, use_capture); // gecko, safari, konqueror and standard.
	}
	else if (typeof document.attachEvent != 'undefined')
	{
		document.attachEvent('on' + event, method); // IE
	}
	else
	{
		window['on' + event] = method;
	}
};

Utils.disableSelection = function(element)
{
	element.onselectstart = function()
	{
		return false;
	};
	//element.unselectable = 'on';
	element.style.MozUserSelect = 'none';
};

/***** Portal Events Handler *****/

function PortalEvents(){}

PortalEvents.listeners =
{
'onLoad'   :[],
'mouseMove':[],
'mouseDown':[],
'mouseUp'  :[]
};

PortalEvents.addListener = function (event,method,object)
{
	PortalEvents.listeners[event].push( {'method':method,'object':object} );
};

PortalEvents.onEvent = function (type,ev)
{
	ev = ev || window.event;

	var ls = PortalEvents.listeners[type];

	for (var i=0; i<ls.length; i++ )
	{
		var listener = ls[i];

		if ( typeof(listener.object) == 'object' )
		{
			var target = listener.object;
			target[listener.method](ev);
		}
		else
		{
			listener.method(ev);
		}
	}
};


// Install events
Utils.addListener('mousedown', function(ev) { PortalEvents.onEvent( 'mouseDown' , ev); }, false);
Utils.addListener('mouseup', function(ev) { PortalEvents.onEvent( 'mouseUp'   , ev); }, false);
Utils.addListener('mousemove', function(ev) { PortalEvents.onEvent( 'mouseMove' , ev);  }, false);

/***** Legacy functions *****/

function hide_overlay_elements(id)
{
	var element = document.getElementById(id);
	element.setAttribute('forced_hidden', 'true');
	element.style.visibility = 'hidden';
}

function show_overlay_elements(id)
{
	var element = document.getElementById(id);
	element.removeAttribute('forced_hidden');
	element.style.visibility = 'visible';
}

function hide_elements_by_tag(element_names)
{
	for (var h = 0; h < element_names.length; h++)
	{
		var elements = document.getElementsByTagName(element_names[h]);
		for (var j = 0; j < elements.length; j++)
		{
			if (elements[j].style.visibility != 'hidden')
			{
				elements[j].setAttribute('forced_hidden', 'true');
				elements[j].style.visibility = 'hidden';
			}
		}
	}
}

function show_elements_by_tag(element_names)
{
	for (var h = 0; h < element_names.length; h++)
	{
		var elements = document.getElementsByTagName(element_names[h]);
		for (var j = 0; j < elements.length; j++)
		{
			if (elements[j].getAttribute('forced_hidden') == 'true')
			{
				elements[j].removeAttribute('forced_hidden');
				elements[j].style.visibility = 'visible';
			}
		}
	}
}

function hide_disruptive_overlay_elements()
{
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{
		var ieversion = Number(RegExp.$1);
		if (ieversion >= 6 && ieversion < 7) // only hide elements if the browser is ie6
		{
			hide_elements_by_tag(['iframe', 'object', 'embed']);
		}
	}
}

function show_disruptive_overlay_elements()
{
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{
		var ieversion = Number(RegExp.$1);
		if (ieversion >= 6 && ieversion < 7) // only show elements if the browser is ie6
		{
			show_elements_by_tag(['iframe', 'object', 'embed']);
		}
	}
}

function SYNACOR_findObj(n, d)
{
	var p, i, x;
	if (!d)
	{
		d = document;
	}
	if ((p = n.indexOf("?")) > 0 && parent.frames.length)
	{
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0, p);
	}
	if (!(x=d[n]) && d.all)
	{
		x = d.all[n];
	}
	for (i = 0; !x && i < d.forms.length; i++)
	{
		x = d.forms[i][n];
	}
	for (i = 0; !x && d.layers && d.layers.length; i++)
	{
		x = SYNACOR_findObj(n, d.layers[i].document);
	}
	if (!x && d.getElementById)
	{
		x = d.getElementById(n);
	}

	return x;
}

function find_pos_x(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
	}

	return curleft;
}

function find_pos_y(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
	}
	return curtop;
}

function SYNACOR_Snap()
{
	var offset, source_element, move_element, dest_x, dest_y,
		args = arguments,
		x = 0,
		y = 0;

	for (offset = 0; offset < args.length; offset += 4)
	{
		source_element = args[offset];
		move_element = args[offset + 1];
		dest_x = parseInt(args[offset + 2], 10);
		dest_y = parseInt(args[offset + 3], 10);

		source_element = document.getElementById(source_element);
		move_element   = document.getElementById(move_element);
		if (!source_element || !move_element)
		{
			return;
		}

		x = find_pos_x(source_element);
		y = find_pos_y(source_element);

		try
		{
			move_element.style.left = (x + dest_x) + 'px';
			move_element.style.top  = (y + dest_y) + 'px';
		}
		catch (e1)
		{
			try
			{
				move_element.offsetLeft = x + dest_x;
				move_element.offsetTop  = y + dest_y;
			}
			catch (e2)
			{
			}
		}
	}
	return;
}


function SYNACOR_showHideLayers()
{ //v6.0
	var i, p, v, obj, vv, vd,
		args = arguments;

	for (i = 0; i < (args.length-2); i += 3)
	{
		if ((obj = SYNACOR_findObj(args[i])) !== null)
		{
			v = args[i + 2];
			if (obj.style)
			{
				obj = obj.style;
				vv  = (v == 'show') ? 'visible' : (v == 'hide') ? 'hidden' : v;
				vd  = (v == 'show') ? 'block'   : (v == 'hide') ? 'none'   : v;
			}
			obj.visibility=vv;
			obj.display=vd;
		}
	}
}

function getXMLRequestObject()
{
	try
	{
		return new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch (e1)
	{
		try
		{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (e2)
		{
			try
			{
				return new XMLHttpRequest();
			}
			catch (e3)
			{
				return false;
			}
		}
	}
}

function get_cdata(dom, tag)
{
	tag = dom.getElementsByTagName(tag);
	if (!tag || tag.length < 1 || !tag[0].firstChild ||	!tag[0].firstChild.data)
	{
		return '';
	}
	return tag[0].firstChild.data;
}

function get_attribute(dom, tag, attribute)
{
	tag = dom.getElementsByTagName(tag);
	if (!tag || tag.length < 1 || !tag[0].attributes ||
	     tag[0].attributes.length < 1 || !tag[0].attributes.getNamedItem(attribute))
	{
		return '';
	}

	return tag[0].attributes.getNamedItem(attribute).value;
}

function hide_id(id_to_hide)
{
	var what = document.getElementById(id_to_hide);
	if (what)
	{
		what.style.display='none';
	}
}

function base64encode(str)
{
	var c1, c2, c3,
		base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
		i = 0,
		len = str.length,
		out;

	out = "";
	while (i < len)
	{
		c1 = str.charCodeAt(i++) & 0xff;
		if (i == len)
		{
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt((c1 & 0x3) << 4);
			out += "==";
			break;
		}
		c2 = str.charCodeAt(i++);
		if (i == len)
		{
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
			out += base64EncodeChars.charAt((c2 & 0xF) << 2);
			out += "=";
			break;
		}
		c3 = str.charCodeAt(i++);
		out += base64EncodeChars.charAt(c1 >> 2);
		out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
		out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
		out += base64EncodeChars.charAt(c3 & 0x3F);
	}
	return out;
}

function trimStr(str)
{
	str = str.replace(/^\s*/, "");
	str = str.replace(/\s*$/, "");

	return str;
}

function add_event_listener(oRef, en, fn)
{
	var obj = (typeof oRef == 'string')? document.getElementById(oRef) : oRef;
	if (window.addEventListener)
	{
		obj.addEventListener(en, fn, false);
	}
	else if (window.attachEvent)
	{
		obj.attachEvent('on'+en, fn);
	}
}

function remove_event_listener(oRef, en, fn)
{
	var obj = (typeof oRef == 'string') ? document.getElementById(oRef) : oRef;
	if (window.addEventListener)
	{
		obj.removeEventListener(en, fn, false);
	}
	else if (window.attachEvent)
	{
		obj.detachEvent('on' + en, fn);
	}
}


function reg_repl_esc(text)
{
	return text.replace(/\$/g, '&#36;');
}


/**
 * Deprecated, do not use
 */
function openWindow(theURL, winName, features)
{
	window.open(theURL, winName, features);
}


function SYNACOR_swapImgRestore()
{ //v3.0
	var i, x;
	var a = document.SYNACOR_sr;
	for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
	{
		x.src = x.oSrc;
	}
}



function SYNACOR_swapImage()
{ //v3.0
	var i, x,
		j = 0,
		a = arguments;

	document.SYNACOR_sr = [];
	for (i = 0; i < (a.length - 2); i += 3)
	{
		if ((x = SYNACOR_findObj(a[i])) !== null)
		{
			document.SYNACOR_sr[j++] = x;
			if (!x.oSrc)
			{
				x.oSrc = x.src;
			}
			x.src = a[i + 2];
		}
	}
}

function waterimg(arg)
{
       window.location = arg;
}

function addLoadEvent(fn)
{
	if (window.addEventListener)
	{
		window.addEventListener('load', fn, false);
	}
	else if (window.attachEvent)
	{
		window.attachEvent('onload', fn);
	}
}
;
/***** js/externalLinks.js *****/
function externalLinks()
{
	if (!document.getElementsByTagName)
	{
		return;
	}
		
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++)
	{
		var anchor = anchors[i];
		
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
		{
			anchor.target = "_blank";
		}
	}
}
;
/***** js/synajax.js *****/
/**
 * Ajax JavaScript framework
 * Loosely based off of the Prototype JavaScript framework
 *    Prototype is (c) 2005 Sam Stephenson <sam@conio.net>
 *    Prototype is freely distributable under the terms of an MIT-style license.
 *    For details, see the Prototype web site: http://prototype.conio.net/
 */

SynAjax_Request_Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];


function getTransport() 
{
	try	
	{
		return new ActiveXObject('Msxml2.XMLHTTP')
	}
	catch (exception) 
	{
		try 
		{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (exception)
		{
			try
			{
				return new XMLHttpRequest()
			}
			catch (exception)
			{
				return false;
			}
		}
	}
}

SynAjax = function()
{
	var self = new Object();

	self.transport = getTransport();
	
	self.request = function(url, options) 
	{
		this.doRequest(null, url, options);
	}

	self.update = function(element_id, url, options)
	{
		this.doRequest(element_id, url, options);
	}

	self.doRequest = function(element_id, url, options)
	{
		this.url        = url;
		this.options    = options;
		this.updater    = element_id;
		this.parameters = this.options.parameters || '';

		try 
		{
			if (this.options.method == 'get')
			{
				this.url += (this.url.match(/\?/) ? '&' : '?') + this.parameters;
			}

			var loader = this;
			this.transport.onreadystatechange = function()
			{
				loader.onStateChange.call(loader);
			}
			this.transport.open(this.options.method, this.url, true);
			this.setRequestHeaders();

			var body = this.options.postBody ? this.options.postBody : this.parameters;
			this.transport.send(this.options.method == 'post' ? body : null);

		}
		catch (exception) 
		{ }
	}

	self.setRequestHeaders = function() 
	{
		var requestHeaders =
			['X-Requested-With', 'XMLHttpRequest'];

		if (this.options.method == 'post') 
		{
			requestHeaders.push('Content-type',	'application/x-www-form-urlencoded');

			/**
			 * Force "Connection: close" for Mozilla browsers to work around
			 * a bug where XMLHttpReqeuest sends an incorrect Content-length
			 * header. See Mozilla Bugzilla #246651.
			 */
			if (this.transport.overrideMimeType)
				requestHeaders.push('Connection', 'close');
		}

		if (this.options.requestHeaders)
		{
			requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
		}

		for (var i = 0; i < requestHeaders.length; i += 2)
		{
			this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
		}
	}

	self.onStateChange = function()
	{
		if (!this.transport)
		{
			if (this.transport == 'undefined')
			{
				return;
			}
		}

		var event = SynAjax_Request_Events[this.transport.readyState];

		if (this.transport.readyState != 1)
		{
			if (event == 'Complete')
			{
				if (this.updater != null)
				{
					var element = document.getElementById(this.updater);
					try 
					{
						element.innerHTML = this.transport.responseText;
					}
					catch (exception)
					{ }
				}

				try
				{
					this.options.onComplete(this.transport);
				}
				catch (exception)
				{ }

				if ((this.header('Content-type') || '').match(/^text\/javascript/i))
				{
					this.evalResponse();
				}
			}

			// Avoid memory leak in MSIE: clean up the oncomplete event handler 
			if (event == 'Complete')
			{
				this.transport.onreadystatechange = function(){};
			}
		}
	}

	self.header = function(name)
	{
		try
		{
			return this.transport.getResponseHeader(name);
		}
		catch (exception)
		{
			return null;
		}
	}

	self.evalResponse = function()
	{
		try
		{
			return eval(this.transport.responseText);
		}
		catch (exception)
		{
			return null;
		}
	}

	return self;
}
;
/***** js/components/Remote_Search/Remote_Search.js *****/
/**
 * Remote_Search javascript class
 */

/**
 * Create a Syn.Remote_Search component instance
 * @constructor
 */
Syn.Remote_Search = Syn.Component.extend (
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * @member Syn.Remote_Search
	 *
	 * @param {Object} config The configuration data structure
	 */
	init: function(config)
	{
		this._super(config);

		if (this.config.omniture_event_id && this.config.omniture_event_id !== '')
		{
			Syn.Tracking.Omniture.setSValues({'events' : this.config.omniture_event_id}, ',');
		}

		// Bind mouseover event to sponsored links "li" element.
		$('.serp_sponsored ol li').bind('mouseover', function(e){
			$(this).addClass('on');
		});

		// Bind mouseout event to sponsored links "li" element.
		$('.serp_sponsored ol li').bind('mouseout', function(e){
			$(this).removeClass('on');
		});
	}
});
;
/***** js/components/askzoom/askzoom.js *****/
/**
 * Ask Zoom javascript class
 */

/**
 * Create a Syn.AskZoom component instance
 * @constructor
 */
Syn.AskZoom = Syn.Component.extend (
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * @member Syn.AskZoom
	 * @param {Object} config The configuration data structure
	 */
	init: function(config)
	{
		this._super(config);

		var type            = config['type'];	
		var uid             = config['uid'];	
		this.ask_proxy_url  = config['ask_proxy_url'];	
		this.ask_options    = config['ask_options'];	
		this.ask_url_params = config['ask_url_params'];	
		this.ask_visible    = config['visible'];

		if (this.ask_visible == 'no')
		{
			$('#' + type + '_' + uid).hide();
			this.container().find('img:last').connect('load',this, function ()
			{
				$('#serp_results_cont .serp_listing_cont').attr('class','serp_listing_cont_no_margin');
			});

		}
		else
		{
			// Make the request to the proxy script
			this.makeRequest(this.ask_proxy_url);
		}
	},

	/**
	 * Make the request to the proxy via getJSON
	 * @member Syn.AskZoom
	 */
	makeRequest: function(request_url)
	{
		var full_url = request_url + '?params=' + json.serialize(this.ask_options) + '&';

		// Show the loading message
		this.showLoading();

		// We need to store a reference so the callback can reference Syn.AskZoom
		Syn.AskZoom.ajaxInstance = this;

		$.getJSON(request_url + '?params=' + json.serialize(this.ask_options) + '&jsoncallback=?', this.proxyCallback);

	},
		
	/**
	 * Launches the popup window with the flash game
	 * @member Syn.AskZoom
	 */
	proxyCallback: function (response)
	{
		Syn.AskZoom.ajaxInstance.response = response.result;

		// Display error if the request failed
                if (response.result == 'success')
		{
			Syn.AskZoom.ajaxInstance.buildResults(response.data);
		}
		// Otherwise, begin processing the response
		else
		{
			Syn.AskZoom.ajaxInstance.displayError('Component is not available at this time.');
		}
	},

	/**
	 * Shows loading graphic when retrieving data
	 * @member Syn.AskZoom
	 */
	showLoading: function()
	{
		$('#askzoom_content_area').hide();
		this.uniqueElmt('askzoom_loading').show().css( { 'width':$('#askzoom_content_area').width(), 'height':$('#askzoom_content_area').height() } );
	},

	/**
	 * This gets displayed when an error occurs.
	 * @member Syn.AskZoom
	 */
	displayError: function(message)
	{
		$('#askzoom_content_area').hide();
		$('#askzoom_loading').hide();
		$('#askzoom_image').hide();
		$('#askzoom_error_message').html(message);
	},
	
	/**
	 * This gets displayed when there are no related suggestions.
	 * @member Syn.AskZoon
	 */
	displayNoResults: function(message)
	{
		$('#askzoom_content_area').hide();
		$('#askzoom_loading').hide();
		$('#askzoom_error_message').hide();
		$('#askzoom_no_related').html(message);
	},

	/**
	 * Builds results and then displays it in the respective divs
	 * @member Syn.AskZoom
	 */
	buildResults: function(results)
	{
		$('#askzoom_loading').hide();
		$('#askzoom_content_area').show();

		var nameString = results.name.toString();
		var expandString = results.expand.toString();
		var narrowString = results.narrow.toString();

		if (nameString == '' && expandString == '' && narrowString == '')
		{
			Syn.AskZoom.ajaxInstance.displayNoResults('There are no related search terms');
		}
		else
		{
			Syn.AskZoom.ajaxInstance.sendToDisplay(nameString,   'name');
			Syn.AskZoom.ajaxInstance.sendToDisplay(expandString, 'expand');
			Syn.AskZoom.ajaxInstance.sendToDisplay(narrowString, 'narrow');
		}
	},

	/**
	 * This sets the divs with the appropriate html
	 * @member Syn.AskZoom
	 */
	sendToDisplay: function(dataString, cat)
	{
		var results    = dataString.split(',');
		var fullpath   = window.location.pathname;
		var scriptname = fullpath.substring(fullpath.lastIndexOf('/') + 1);
		var resultsLength = results.length;
		var params = this.ask_url_params;
		
		if (resultsLength >= 1 && dataString != '')
		{	
			var display   = '<ul>';

			for (var i = 0; i < resultsLength; i++)
			{
				var curResult = results[i];
				display += '<li><a href="' + scriptname + '?q=' + escape(curResult) + '&' + escape(params) + '&qry_lnk=' + escape(curResult) + '&context=relatedsearches">' + curResult  + '</a></li>';
			}
			display   += '</ul>';

			$('#askzoom_'+ cat +'_search').html(display);
		}
		else
		{
			$('#askzoom_'+ cat +'_head').hide();
		}
		
	}

});

;
/***** en_US/globals/javascripts/3rdparty/jquery/plugins/jquery.jsonp-2.1.4.js *****/
/*
 * jQuery JSONP Core Plugin 2.1.4 (2010-11-17)
 * 
 * http://code.google.com/p/jquery-jsonp/
 *
 * Copyright (c) 2010 Julian Aubourg
 *
 * This document is licensed as free software under the terms of the
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 */
( function( $ , setTimeout ) {
	
	// ###################### UTILITIES ##
	
	// Noop
	function noop() {
	}
	
	// Generic callback
	function genericCallback( data ) {
		lastValue = [ data ];
	}

	// Add script to document
	function appendScript( node ) {
		head.insertBefore( node , head.firstChild );
	}
	
	// Call if defined
	function callIfDefined( method , object , parameters ) {
		return method && method.apply( object.context || object , parameters );
	}
	
	// Give joining character given url
	function qMarkOrAmp( url ) {
		return (/\?/ .test( url ) ? "&" : "?");
	}
	
	var // String constants (for better minification)
		STR_ASYNC = "async",
		STR_CHARSET = "charset",
		STR_EMPTY = "",
		STR_ERROR = "error",
		STR_JQUERY_JSONP = "_jqjsp",
		STR_ON = "on",
		STR_ONCLICK = STR_ON + "click",
		STR_ONERROR = STR_ON + STR_ERROR,
		STR_ONLOAD = STR_ON + "load",
		STR_ONREADYSTATECHANGE = STR_ON + "readystatechange",
		STR_REMOVE_CHILD = "removeChild",
		STR_SCRIPT_TAG = "<script/>",
		STR_SUCCESS = "success",
		STR_TIMEOUT = "timeout",
		
		// Shortcut to jQuery.browser
		browser = $.browser,
		
		// Head element (for faster use)
		head = $( "head" )[ 0 ] || document.documentElement,
		// Page cache
		pageCache = {},
		// Counter
		count = 0,
		// Last returned value
		lastValue,
		
		// ###################### DEFAULT OPTIONS ##
		xOptionsDefaults = {
			//beforeSend: undefined,
			//cache: false,
			callback: STR_JQUERY_JSONP,
			//callbackParameter: undefined,
			//charset: undefined,
			//complete: undefined,
			//context: undefined,
			//data: "",
			//dataFilter: undefined,
			//error: undefined,
			//pageCache: false,
			//success: undefined,
			//timeout: 0,
			//traditional: false,		
			url: location.href
		};
	
	// ###################### MAIN FUNCTION ##
	function jsonp( xOptions ) {
		
		// Build data with default
		xOptions = $.extend( {} , xOptionsDefaults , xOptions );
		
		// References to xOptions members (for better minification)
		var completeCallback = xOptions.complete,
			dataFilter = xOptions.dataFilter,
			callbackParameter = xOptions.callbackParameter,
			successCallbackName = xOptions.callback,
			cacheFlag = xOptions.cache,
			pageCacheFlag = xOptions.pageCache,
			charset = xOptions.charset,
			url = xOptions.url,
			data = xOptions.data,
			timeout = xOptions.timeout,
			pageCached,
			
			// Abort/done flag
			done = 0,
			
			// Life-cycle functions
			cleanUp = noop;
		
		// Create the abort method
		xOptions.abort = function() { 
			! done++ &&	cleanUp(); 
		};

		// Call beforeSend if provided (early abort if false returned)
		if ( callIfDefined( xOptions.beforeSend, xOptions , [ xOptions ] ) === false || done ) {
			return xOptions;
		}
			
		// Control entries
		url = url || STR_EMPTY;
		data = data ? ( (typeof data) == "string" ? data : $.param( data , xOptions.traditional ) ) : STR_EMPTY;
			
		// Build final url
		url += data ? ( qMarkOrAmp( url ) + data ) : STR_EMPTY;
		
		// Add callback parameter if provided as option
		callbackParameter && ( url += qMarkOrAmp( url ) + encodeURIComponent( callbackParameter ) + "=?" );
		
		// Add anticache parameter if needed
		! cacheFlag && ! pageCacheFlag && ( url += qMarkOrAmp( url ) + "_" + ( new Date() ).getTime() + "=" );
		
		// Replace last ? by callback parameter
		url = url.replace( /=\?(&|$)/ , "=" + successCallbackName + "$1" );
		
		// Success notifier
		function notifySuccess( json ) {
			! done++ && setTimeout( function() {
				cleanUp();
				// Pagecache if needed
				pageCacheFlag && ( pageCache [ url ] = { s: [ json ] } );
				// Apply the data filter if provided
				dataFilter && ( json = dataFilter.apply( xOptions , [ json ] ) );
				// Call success then complete
				callIfDefined( xOptions.success , xOptions , [ json , STR_SUCCESS ] );
				callIfDefined( completeCallback , xOptions , [ xOptions , STR_SUCCESS ] );
			} , 0 );
		}
		
		// Error notifier
		function notifyError( type ) {
			! done++ && setTimeout( function() {
				// Clean up
				cleanUp();
				// If pure error (not timeout), cache if needed
				pageCacheFlag && type != STR_TIMEOUT && ( pageCache[ url ] = type );
				// Call error then complete
				callIfDefined( xOptions.error , xOptions , [ xOptions , type ] );
				callIfDefined( completeCallback , xOptions , [ xOptions , type ] );
			} , 0 );
		}
	    
		// Check page cache
		pageCacheFlag && ( pageCached = pageCache[ url ] ) 
			? ( pageCached.s ? notifySuccess( pageCached.s[ 0 ] ) : notifyError( pageCached ) )
			:
			// Initiate request
			setTimeout( function( script , scriptAfter , timeoutTimer ) {
				
				if ( ! done ) {
				
					// If a timeout is needed, install it
					timeoutTimer = timeout > 0 && setTimeout( function() {
						notifyError( STR_TIMEOUT );
					} , timeout );
					
					// Re-declare cleanUp function
					cleanUp = function() {
						timeoutTimer && clearTimeout( timeoutTimer );
						script[ STR_ONREADYSTATECHANGE ]
							= script[ STR_ONCLICK ]
							= script[ STR_ONLOAD ]
							= script[ STR_ONERROR ]
							= null;
						head[ STR_REMOVE_CHILD ]( script );
						scriptAfter && head[ STR_REMOVE_CHILD ]( scriptAfter );
					};
					
					// Install the generic callback
					// (BEWARE: global namespace pollution ahoy)
					window[ successCallbackName ] = genericCallback;

					// Create the script tag
					script = $( STR_SCRIPT_TAG )[ 0 ];
					script.id = STR_JQUERY_JSONP + count++;
					
					// Set charset if provided
					if ( charset ) {
						script[ STR_CHARSET ] = charset;
					}
					
					// Callback function
					function callback( result ) {
						( script[ STR_ONCLICK ] || noop )();
						result = lastValue;
						lastValue = undefined;
						result ? notifySuccess( result[ 0 ] ) : notifyError( STR_ERROR );
					}
										
					// IE: event/htmlFor/onclick trick
					// One can't rely on proper order for onreadystatechange
					// We have to sniff since FF doesn't like event & htmlFor... at all
					if ( browser.msie ) {
						
						script.event = STR_ONCLICK;
						script.htmlFor = script.id;
						script[ STR_ONREADYSTATECHANGE ] = function() {
							/loaded|complete/.test( script.readyState ) && callback();
						};
						
					// All others: standard handlers
					} else {					
					
						script[ STR_ONERROR ] = script[ STR_ONLOAD ] = callback;
						
						browser.opera ?
							
							// Opera: onerror is not called, use synchronized script execution
							( ( scriptAfter = $( STR_SCRIPT_TAG )[ 0 ] ).text = "jQuery('#" + script.id + "')[0]." + STR_ONERROR + "()" )
							
							// Firefox: set script as async to avoid blocking scripts (3.6+ only)
							: script[ STR_ASYNC ] = STR_ASYNC;
							
						;
					}
					
					// Set source
					script.src = url;
					
					// Append main script
					appendScript( script );
					
					// Opera: Append trailing script
					scriptAfter && appendScript( scriptAfter );
				}
				
			} , 0 );
		
		return xOptions;
	}
	
	// ###################### SETUP FUNCTION ##
	jsonp.setup = function( xOptions ) {
		$.extend( xOptionsDefaults , xOptions );
	};

	// ###################### INSTALL in jQuery ##
	$.jsonp = jsonp;
	
} )( jQuery , setTimeout );
;
/***** en_US/globals/javascripts/framework/synuifilemgr.js *****/
(function($){

Syn.UIFileMgr = 
{
	maxUrlLength: 2083,

	addLoadedJavaScripts: function(scripts)
	{
		$(scripts).each( function (){ Syn.Config.Framework.Javascripts[this]=true; } );
	},

	addLoadedStyleSheets: function(styles)
	{
		$(styles).each( function (){ Syn.Config.Framework.Stylesheets[this]=true; } );
	},

	loadJavaScripts: function(scripts,callback)
	{
		var nl_scripts = [];
		callback = callback ? callback : function(){};

		for ( var i=0; i<scripts.length; i++ )
		{
			var s = scripts[i];
			if ( !Syn.Config.Framework.Javascripts[s] )
			{
				if (s.search(/http(?:s)?:\/\//i) === 0)
				{
					scripts.splice(i,1);
					// recursion here is necessary because the callback must execute after all scripts 
					// are sequentially loaded.  
					$.getScript(s,function()
					{ 
						Syn.UIFileMgr.addLoadedJavaScripts([s]);
						Syn.UIFileMgr.loadJavaScripts(scripts,callback); 
					});
					return;	
				}
				else 
				{
					nl_scripts.push(s);  
				}
			}

		};

		if (nl_scripts.length==0)
		{
			callback();
			return;
		}

		if (!this.js_hash_tag)
		{
			var self = this;

			$('head script[src*="' + Syn.Config.Framework.ConsolidatorUrl + '"]').each(function() {
				self.js_hash_tag = $(this).attr('src').split(';')[3];
			});
		}

		var urls = Syn.UIFileMgr.buildResconUrls(nl_scripts, 'j', this.js_hash_tag);
		for (i=0; i<urls.length; i++)
		{
			$.getScript(urls[i], function(){ Syn.UIFileMgr.addLoadedJavaScripts(nl_scripts); callback(); } );
		}
	},

	loadStyleSheets: function(styles,callback)
	{
		var nl_styles = [];
		callback = callback ? callback : function(){};

		$.each(styles,function(i)
		{
			var s = this;
			if ( !Syn.Config.Framework.Stylesheets[s] )
			{
				if ( s.indexOf('http://') == 0 )
				{
					$.getStyle(s);
				}
				else 
				{
					nl_styles.push(s);  
				}
			}
		});

		if (nl_styles.length==0)
		{
			callback();
			return;
		}

		if (!this.css_hash_tag)
		{
			var self = this;

			$('head link').each(function() {
				var href = this.href;
				if (href && href.indexOf(Syn.Config.Framework.ConsolidatorUrl) != -1) {
					self.css_hash_tag = href.split(';')[3];
				}
			});
		}

		var urls = Syn.UIFileMgr.buildResconUrls(nl_styles, 's', this.css_hash_tag);
		for (i=0; i<urls.length; i++)
		{
			$.getStyle(urls[i]);
			Syn.UIFileMgr.addLoadedStyleSheets(nl_styles);
			callback();
		}
	},

	buildResconUrls: function(files, type, modtag)
	{
//	if (empty($files))
		if (!files.length)
//	{
		{
//		return array();
			return [];
//	}
		}

//	$client = $this->getClient();
//	$client_id = $client ? $client->getInternalId() : '';
		var client = Syn.Config.Framework.Client;
//	$site = $this->getSite();
//	$site_id = $site ? $site->getInternalId() : '';
		var site = Syn.Config.Framework.Site;
//	$dual_id = $client_id === $site_id ? $client_id : "$client_id/$site_id";
		var dual_id = client === site ? client : client+"/"+site;
//	$site = $site ? $site : new Synacor_Site();
//	$prefix = $site->getStaticUrl($this->config['consolidator_script_name']) . '?'
		var prefix = Syn.Config.Framework.ConsolidatorUrl + '?'
//		. $type . ';'
			+ type + ';'
//		. $dual_id . ';'
			+ dual_id + ';'
//		. Synacor_Locale::getLocale() . ';';
			+ Syn.Config.Framework.Locale + ';';

//	$maxlen = self::MAX_URL_LENGTH - strlen($prefix) - 9; // 9 = hash (8) + ";" (1)
		var maxlen = Syn.UIFileMgr.maxUrlLength - prefix.length - 9;

//	$urls = array();
		var urls = [];
//	$curindex = 0;
		var curindex = 0;

//	foreach ($files as $filename => $stat)
		var i, cms_uri, filename, make_new;
		for (i=0; i<files.length; i++)
//	{
		{
			filename = files[i];
//		// if file is a remote url
//		if (preg_match('%^https?://%', $filename))
//		{
//			$urls[] = $filename;
//			$curindex = count($urls);
//			continue;
//		}

//		if (preg_match('#^cms\:\/\/([^\/]*)\/[^\/]+\/(.+)$#', $filename, $cms_uri))
			if (cms_uri = /^cms\:\/\/([^\/]*)\/[^\/]+\/(.+)$/.exec(filename))
//		{
			{
//			$filename = 'cms:/'.($cms_uri[1] === '' ? '' : $cms_uri[1].'/').$cms_uri[2];
				filename = 'cms:/' + (cms_uri[1] === '' ? '' : cms_uri[1] + '/') + cms_uri[2];
//		}
			}

//		// otherwise, file is a local path
//		$make_new = FALSE;
			make_new = false;
//		if (!$this->config['consolidateRelpaths'] || !isset($urls[$curindex]))
			if (curindex >= urls.length)
//		{
			{
//			$make_new = TRUE;
				make_new = true;
//		}
			}
//		else
			else
//		{
			{
//			$urls[$curindex]['cfh']->addFile($filename);
				urls[curindex].cfh.addFile(filename);
//			if ($urls[$curindex]['cfh']->getCompressedLength() > $maxlen)
				if (urls[curindex].cfh.getCompressedLength() > maxlen)
//			{
				{
//				$urls[$curindex]['cfh']->popFile();
					urls[curindex].cfh.popFile();
//				$make_new = TRUE;
					make_new = true;
//			}
				}
//			else
//			{
//				$urls[$curindex]['stats'][$filename] = $stat;
//			}
//		}
			}

//		if ($make_new)
			if (make_new)
//		{
			{
//			$urls[] = array('stats'=>array(), 'cfh'=>new Synacor_Utility_Compression_FileHierarchy($type === 's' ? 'css' : 'js'));
				urls.push({cfh: new Syn.FileHierarchyCompression(type === 's' ? 'css' : 'js')});
//			$curindex = count($urls) - 1;
				curindex = urls.length - 1;
//			$urls[$curindex]['stats'][$filename] = $stat;
//			$urls[$curindex]['cfh']->addFile($filename);
				urls[curindex].cfh.addFile(filename);
//		}
			}
//	}
		}

//	$urls_count = count($urls);
//	for ($i=0; $i<$urls_count; $i++)
		for (i=0; i<urls.length; i++)
//	{
		{
//		if (is_array($urls[$i]))
//		{
//			$urls[$i] = $prefix . self::createModTag($urls[$i]['stats']) . ";" . $urls[$i]['cfh']->getCompressedString();
			urls[i] = prefix + modtag + ';' + urls[i].cfh.getCompressedString();
//		}
//	}
		}

//	return $urls;
		return urls;
	}
};

Syn.FileHierarchyCompression = Class.extend({
///**
// * @var array $shortchars the valid characters to use for compression abbreviation (in a url)
// */
//public static $shortchars = array("!", "~", "*", "@", "=", "+", "$", ",", "^", "/", "?", "{", "}", "|", "\\", "[", "]");
//
///**
// * @var string $_suffix the file suffix (extension) to use, like "js" for files like "script1.js"
// */
//private $_suffix;
//
///**
// * @var string $_suffix_re the file suffix (extension) regex, like '/\.js$/' for files like "script1.js"
// */
//private $_suffix_re;
//
///**
// * @var array $_nodelist the stack of files to compress, including metadata
// */
//private $_nodelist = array();
//
///**
// * @var array $_shortmapCache the current cached shortmap (pathitem => shortchar)
// */
//private $_shortmapCache = array();
//
///**
// * @var integer $_lengthCache the current cached length
// */
//private $_lengthCache = NULL;
//
///**
// * Prepeares the compression engine with configuration needed by the rest
// * of the process.
// *
// * @param string $suffix The suffix (js if files are a.js, b.js, etc) used for the files to compress
// */
//public function __construct($suffix)
	init: function(suffix)
//{
	{
		this.shortchars = ["!", "~", "*", "@", "=", "+", "$", ",", "^", "/", "?", "{", "}", "|", "\\", "[", "]"];
		this._suffix = null;
		this._suffix_re = null;
		this._nodelist = [];
		this._shortmapCache = [];
		this._lengthCache = null;

//	$this->_suffix = $suffix;
		this._suffix = suffix;
//	$this->_suffix_re = '/\.'.preg_quote($suffix,'/').'$/';
		this._suffix_re = new RegExp('\\.' + suffix.replace(/(\W)/g, '\\$1') + '$');
//}
	},

	clone: function(obj)
	{
		var rv = {};
		var k;
		for (k in obj)
		{
			rv[k] = obj[k];
		}
		return rv;
	},

//
///**
// * Clears the internal caches; called when a change is made which invalidates cachable results.
// *
// * @return boolean success
// */
//private function _clearCaches()
	_clearCaches: function()
//{
	{
//	$this->_shortmapCache = array();
		this._shortmapCache = [];
//	$this->_lengthCache = NULL;
		this._lengthCache = null;
//	return TRUE;
		return true;
//}
	},
//
///**
// * Removes the most recently added file from the list of filenames to compress.
// *
// * @return mixed the file removed or NULL if empty
// */
//public function popFile()
	popFile: function()
//{
	{
//	$this->_clearCaches();
		this._clearCaches();
//	return array_pop($this->_nodelist);
		return this._nodelist.pop();
//}
	},
//
///**
// * Adds a filename to the list of filenames to compress.
// *
// * @param string $filename the filename to add
// * @return boolean success
// */
//public function addFile($filename)
	addFile: function(filename)
//{
	{
//	// return false if the filename isn't valid given the current suffix
//	if (($filename = preg_replace($this->_suffix_re, '', $filename, 1, $count)) === NULL || $count !== 1)
		if (!filename.match(this._suffix_re))
//	{
		{
//		return FALSE;
			return false;
//	}
		}
		filename = filename.replace(this._suffix_re, '');
//

//	$this->_clearCaches();
		this._clearCaches();
//

//	// build the initial node metadata
//	$node = array('route'=>explode('/', $filename));
		var node = {route: filename.split('/')};
//	$node['filename'] = array_pop($node['route']);
		node.filename = node.route.pop();
//

//	// collect the previous data or use dummy values if this is the first node
//	$last = empty($this->_nodelist) ? array('route'=>array(),'freq'=>array(),'roi'=>array(),'length'=>0) : $this->_nodelist[count($this->_nodelist)-1];
		var last = !this._nodelist.length ? {route:[], freq:{}, roi:{}, length:0} : this._nodelist[this._nodelist.length-1];
//

//	// find the pivot (the point at which the route changes)
//	$cn = count($node['route']);
		var cn = node.route.length;
//	$cl = count($last['route']);
		var cl = last.route.length;
//	$max = max($cn, $cl);
		var max = cn > cl ? cn : cl;
//	for ($pivot=0; $pivot<$max; $pivot++)
		var pivot;
		for (pivot = 0; pivot < max; pivot++)
//	{
		{
//		if (isset($node['route'][$pivot]) !== isset($last['route'][$pivot]) || $node['route'][$pivot] !== $last['route'][$pivot])
			if (!!(node.route[pivot]) !== !!(last.route[pivot]) || node.route[pivot] !== last.route[pivot])
//		{
			{
//			break;
				break;
//		}
			}
//	}
		}
//

//	if ($pivot < $cl)
		if (pivot < cl)
//	{
		{
//		$node['pop'] = $cl - $pivot; //cost to pop stack to correct position
			node.pop = cl - pivot;
//	}
		}
//	else
		else
//	{
		{
//		$node['pop'] = 0;
			node.pop = 0;
//	}
		}
//

//	// copy in some base values to modify
//	$node['freq'] = $last['freq'];
		node.freq = this.clone(last.freq);
//	$node['roi'] = $last['roi'];
		node.roi = this.clone(last.roi);
//	$node['length'] = $last['length'];
		node.length = last.length;
//	$node['push'] = array();
		node.push = [];
//

//	// for each new entry to be added to the final output, update push list and roi data
//	// <= $cn so that when $i==$cn, we can consider $node['filename'] instead
//	for ($i=$pivot; $i<=$cn; $i++)
		var i;
		for (i = pivot; i <= cn; i++)
//	{
		{
//		// pick the right entry, either something from the route or the filename
//		$entry = $i<$cn ? $node['route'][$i] : $node['filename'];
			var entry = i < cn ? node.route[i] : node.filename;
//

//		// determine roi for the entry
//		if (!isset($node['roi'][$entry]))
			if (!(entry in node.roi))
//		{
			{
//			$node['freq'][$entry] = 0;
				node.freq[entry] = 0;
//			$node['roi'][$entry] = -strlen($entry)-1;
				node.roi[entry] = -entry.length - 1;
//		}
			}
//

//		$node['freq'][$entry]++;
			node.freq[entry]++;
//		$node['roi'][$entry] += strlen($entry) - 1;
			node.roi[entry] += entry.length - 1;
//

//		// if not the last (fake) entry
//		if ($i < $cn)
			if (i < cn)
//		{
			{
//			$node['push'][] = $entry;
				node.push.push(entry);
//		}
			}
//	}
		}
//

//	$node['length'] += $node['pop']; // +1 per uplevel
		node.length += node.pop;
//	$node['length'] += count($node['push']); // +1 per downlevel for delimiter
		node.length += node.push.length;
//	foreach ($node['push'] as $entry)
		for (i = 0; i < node.push.length; i++)
//	{
		{
//		$node['length'] += strlen($entry); // +strlen per downlevel for stack level name
			node.length += node.push[i].length;
//	}
		}
//

//	if (!$node['pop'] && !empty($this->_nodelist))
		if (!node.pop && this._nodelist.length)
//	{
		{
//		$node['length']++; // +1 for delimiter
			node.length++;
//	}
		}
//

//	$node['length'] += strlen($node['filename']); // +strlen for actual entry
		node.length += node.filename.length;
//

//	// save the new node to the list
//	$this->_nodelist[] = $node;
		this._nodelist.push(node);
//

//	return TRUE;
		return true;
//}
	},
//
///**
// * Returns the current shortmap (pathitem => shortchar) for the current list
// * of filenames.
// *
// * @return array the current shortmap (pathitem => shortchar)
// */
//public function getShortmap()
	getShortmap: function()
//{
	{
//	// if we don't have a cached shortmap and we have nodes to build one from
//	if (empty($this->_shortmapCache) && !empty($this->_nodelist))
		if (!this._shortmapCache.length && this._nodelist.length)
//	{
		{
//		$shortchars = self::$shortchars;
			var shortchars = this.shortchars.slice(0);
//		$roi = $this->_nodelist[count($this->_nodelist)-1]['roi'];
			var roi = this._nodelist[this._nodelist.length-1].roi;
//
//		// for the top count($shortchars) highest roi entries, save them to the shortmap
//		$shortmap = array();
			var shortmap = [];
//		arsort($roi);
			var roi_keys = [];
			var k,i;
			for (k in roi)
			{
				roi_keys.push(k);
			}
			roi_keys.sort(function(b,a){ a=roi[a];b=roi[b]; return a>b ? 1 : a<b ? -1 : 0; });
//		foreach ($roi as $pathitem=>$value)
			var pathitem, value;
			for (i=0; i<roi_keys.length; i++)
//		{
			{
				pathitem = roi_keys[i];
				value = roi[pathitem];
//			if (empty($shortchars) || $value < 1)
				if (!shortchars.length || value < 1)
//			{
				{
//				break;
					break;
//			}
				}
//

//			$shortmap[$pathitem] = array_shift($shortchars);
				shortmap[pathitem] = shortchars.shift();
//		}
			}
//

//		$this->_shortmapCache = $shortmap;
			this._shortmapCache = shortmap;
//	}
		}
//
//	return $this->_shortmapCache;
		return this._shortmapCache;
//}
	},
//
///**
// * Returns the predicted length of the compressed data.
// *
// * @return integer the predicted length of the compressed data
// */
//public function getCompressedLength()
	getCompressedLength: function()
//{
	{
//	if (is_null($this->_lengthCache))
		if (this._lengthCache == null)
//	{
		{
//		if (empty($this->_nodelist))
			if (!this._nodelist.length)
//		{
			{
//			$this->_lengthCache = 0;
				this._lengthCache = 0;
//		}
			}
//		else
			else
//		{
			{
//			$node = $this->_nodelist[count($this->_nodelist)-1];
				var node = this._nodelist[this._nodelist.length-1];
//			$length = $node['length'];
				var length = node.length;
//

//			foreach ($this->getShortmap() as $pathitem => $shortchar)
				var pathitem;
				for (pathitem in this.getShortmap())
//			{
				{
//				$length -= $node['roi'][$pathitem];
					length -= node.roi[pathitem];
//			}
				}
//

//			$this->_lengthCache = $length;
				this._lengthCache = length;
//		}
			}
//	}
		}
//

//	return $this->_lengthCache;
		return this._lengthCache;
//}
	},
//
///**
// * Returns the compressed form of the current list of filenames.
// *
// * @return string the compressed data
// */
//public function getCompressedString()
	getCompressedString: function()
//{
	{
//	$str = '';
		var str = '';
//
//	// save compressed form of shortmap like "word1!word2@word3#word4$"
//	$shortmap = $this->getShortmap();
		var shortmap = this.getShortmap();
//	foreach ($shortmap as $pathitem => $shortchar)
		var pathitem;
		for (pathitem in shortmap)
//	{
		{
//		$str .= $pathitem . $shortchar;
			str += pathitem + shortmap[pathitem];
//	}
		}
//

//	// for each node, build compressed form as per metadata
//	foreach ($this->_nodelist as $i=>$node)
		var i, j, node;
		for (i=0; i<this._nodelist.length; i++)
//	{
		{
			node = this._nodelist[i];
//		if ($node['pop'])
			if (node.pop)
//		{
			{
//			$str .= str_repeat(')', $node['pop']);
				str += (new Array(node.pop+1)).join(')');
//		}
			}
//		elseif ($i > 0)
			else if (i > 0)
//		{
			{
//			// no pop delimiter but other content present; add file delimiter instead
//			$str .= ';';
				str += ';';
//		}
			}
//

//		// push to new stack position, applying shortmap when possible
//		foreach ($node['push'] as $entry)
			for (j=0; j<node.push.length; j++)
//		{
				{
				entry = node.push[j];
//			$str .= (isset($shortmap[$entry]) ? $shortmap[$entry] : $entry) .'(';
				str += (shortmap[entry] || entry) + '(';
//		}
			}
//
//		// add actual filename entry, applying shortmap when possible
//		$str .= isset($shortmap[$node['filename']]) ? $shortmap[$node['filename']] : $node['filename'];
			str += shortmap[node.filename] || node.filename;
//	}
		}
//
//	return $str;
		return str;
//}
	},
//
///**
// * Returns the array of filenames contained by the compressed data in $str
// *
// * @param string $str the compressed data
// * @return array the list of filenames
// */
//public function uncompressHierarchy($str)
	uncompressHierarchy: function(str)
//{
	{
//	$filelist = array();
		var filelist = [];
//	$stack = array();
		var stack = [];
//

//	$offset = 0;
//
//	// first, read off the shortmap from the front
//	$node_mapping = array();
		var node_mapping = [];
		var shortmap_re = /([\w\-\.\:]+)([^\(\)\;\w\-\.\:])/g;
		var matches, lastIndex;
//	while (preg_match('/^([\w\-\.\:]+)([^\(\;\w\-\.\:])/', substr($str,$offset), $matches, PREG_OFFSET_CAPTURE))
		while (matches = shortmap_re.exec(str))
//	{
		{
//		$node_mapping[$matches[2][0]] = $matches[1][0];
			node_mapping[matches[2]] = matches[1];
//		$offset += strlen($matches[0][0]);
			lastIndex = shortmap_re.lastIndex;
//	}
		}
//

		var step_re = /([\w\-\.\:]+|[^\w\-\.\:\(\)\;])(\(?)|(\))/g;
		step_re.lastIndex = lastIndex;
//	// then, read each push, entry, or pop and create the actual filelist
//	while (preg_match('/([\w\-\.\:]+|[^\w\-\.\:\(\)\;])(\(?)|(\))/', $str, $matches, PREG_OFFSET_CAPTURE, $offset))
		while (matches = step_re.exec(str))
//	{
		{
//		if ($matches[1][0] !== '') // entry (file/dir)
			if (matches[1] != undefined)
//		{
			{
//			$node = isset($node_mapping[$matches[1][0]]) ? $node_mapping[$matches[1][0]] : $matches[1][0];
				node = node_mapping[matches[1]] || matches[1];
//			if ($matches[2][0] !== '') // directory (push)
				if (matches[2] != '')
//			{
				{
//				array_push($stack, $node.'/');
					stack.push(node+'/');
//			}
				}
//			else // file
				else
//			{
				{
//				$filelist[] = implode('',$stack).$node.'.'.$this->_suffix;
					filelist.push(stack.join('') + node + '.' + this._suffix);
//			}
				}
//		}
			}
//		elseif ($matches[3][0] !== '') // closing paren
			else if (matches[3] != undefined)
//		{
			{
//			array_pop($stack);
				stack.pop();
//		}
			}
//
//		// update offset for next match
//		$offset = $matches[0][1]+strlen($matches[0][0]);
//	}
		}
//
//	return $filelist;
		return filelist;
//}
	}
});

})(Syn.$);
;
/***** en_US/globals/javascripts/framework/syncomponentutils.js *****/
/*global json */
(function($){

Syn.ComponentUtils =
{
	/**
	 * Gets a component given a uri, parent uri and vals.
	 * @member Syn.ComponentUtils
	 * @param {String} component_uri A uri of the component to render
	 * @param {String} parent_uri A uri of the parent uri for the component to render
	 * @param {Object} vals The values you wish to submit to the component
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	 */
	getComponent: function(component_uri, parent_uri, vals, obj, method)
	{
		var rq, url,
			callback = function(res) {
				Syn.ComponentUtils.loadUxAssets(res, function()
				{
					if (typeof method === 'string')
					{
						obj[method].apply(obj, [res]);
					}
					else
					{
						method.apply(obj, [res]);
					}
					$('pre.scroll_loader:in-viewport').showComment();
				});
			};

		// Set up request parameters
		vals._uri        = component_uri;
		vals._parent_uri = parent_uri;
		vals._root_url   = Syn.Config.Framework.PortalRoot;
		vals._client_uri = 'client://client_config/'+Syn.Config.Framework.Client+'/';
		vals._site_uri   = 'site://site_config/'+Syn.Config.Framework.Site+'/';
		vals._page_uri   = Syn.Config.Framework.Page;
		vals._session    = Syn.Config.Framework.Session;
		vals._user_id    = Syn.Config.Framework.UserId;
		vals._auth_token = Syn.Config.Framework.AuthToken;

		// Build request object properties that are
		// consistent across both request types
		rq = {
			contentType: 'application/json',
			success: callback
		};

		// Request object properties for jsonp
		if (vals.app_server || vals.app_server_url || Syn.Config.Framework.Syndicated)
		{
			vals._is_jsonp = 1;
			url = vals.app_server_url || (Syn.Config.Framework.Syndicated ? Syn.Config.Framework.PortalRoot : Syn.Config.Framework.AppServer);
			rq.url = url + '_/';
			rq.dataType = 'jsonp';
			rq.data = vals;
		}
		else
		{
			rq.url = Syn.Config.Framework.PortalRoot + '_/';
			rq.type = 'post';
			rq.dataType = 'json';
			rq.data = json.serialize(vals);
		}

		$.ajax(rq);
	},

	loadUxAssets: function(res, callback)
	{
		var has_css = res && res.stylesheets && res.stylesheets.length;
		var has_js  = res && res.javascripts && res.javascripts.length;
		if (has_css && has_js)
		{
			Syn.UIFileMgr.loadStyleSheets(res.stylesheets, function()
			{
				Syn.UIFileMgr.loadJavaScripts(res.javascripts, callback);
			});
		}
		else if (has_css)
		{
			Syn.UIFileMgr.loadStyleSheets(res.stylesheets, callback);
		}
		else if (has_js)
		{
			Syn.UIFileMgr.loadJavaScripts(res.javascripts, callback);
		}
		else
		{
			callback();
		}
	}
};

})(Syn.$);
;
/***** en_US/globals/javascripts/framework/syncomponentmgr.js *****/
(function($){

/**
 * The Syn.ComponentMgr Static Class
 * @class Syn.ComponentMgr
 */
Syn.ComponentMgr =
{
	/**
	 * Map of component instances by class
	 * @member Syn.ComponentMgr
	 */
	instancesByClass: {},

	/**
	 * Map of instances by uid
	 * @member Syn.ComponentMgr
	 */
	instancesByUid: {},

	/**
	 * Instantiate a component instance
	 * @member Syn.ComponentMgr
	 */
	instantiate: function(config)
	{
		config['uid'] = config['uid'] || config['event_id'];

		var exists = Syn.ComponentMgr.instancesByUid[config['uid']];

		if (exists && exists.config['class_name'] == config['class_name'])
		{
			exists.onAjaxUpdate(config);
			return exists;
		}

		if (config["class_name"])
		{
			var instance = new (window["eval"](config['class_name']))(config);
			var inst_class_cache = Syn.ComponentMgr.instancesByClass[config['class_name']] || [];
			Syn.ComponentMgr.instancesByClass[config['class_name']] = inst_class_cache;

			inst_class_cache.push(instance);
			Syn.ComponentMgr.instancesByUid[instance.uid] = instance;
			return instance;
		}

		return false;
	},

	/**
	 * Get an array of instances of a particular component class
	 * @param {String} class The class of component to
	 * @return {Array} An array of instances
	 */
	getInstancesByClass: function(cclass)
	{
		return Syn.ComponentMgr.instancesByClass[cclass] || [];
	},

	/**
	 * Get an instance of a component based on uid
	 * @param {String} uid The uid of the component
	 * @return {Object} The component instance
	 */
	getInstanceByUid: function(uid)
	{
		return Syn.ComponentMgr.instancesByUid[uid];
	},

	/**
	 * Remove a component instance from the component manager
	 * @param {Object} instance The instance to be removed from the page
	 */
	remove: function(instance)
	{
		var class_arr;
		class_arr = Syn.ComponentMgr.instancesByClass[instance.config['class_name']];

		if (!class_arr)
		{
			return;
		}

		for (var i=0; i<class_arr.length; i++ )
		{
			if (class_arr[i] == instance)
			{
				class_arr.splice(i,1);
				break;
			}
		}

		if ( Syn.ComponentMgr.instancesByUid[instance.uid] == instance )
		{
			delete Syn.ComponentMgr.instancesByUid[instance.uid];
		}

		if (window['dd_writeCookie'])
		{
			dd_writeCookie();
		}
	}
};

})(Syn.$);
;
/***** en_US/globals/javascripts/framework/syntrack.js *****/
(function($){

var jQuery = $;

/**
 * Tracking metrics namespace. 
 */
Syn.Tracking = {};

/**
 * Tracking module for links
 * This should be the global - analytics provider agnostic
 * link tracking function used throughout our portals, across
 * most, if not all clients.
 */
Syn.Tracking.TrackLink =
{
	/**
	 * Record parameters to the tracking system
	 * This method is called via the track method below.
	 * It first checks to make sure valid args have been specified,
	 * then it checks to see if any handler functions have been defined.
	 * If so, it collects information from the jQuery element passed in, and
	 * then calls each handler method defined - passing the following params
	 * to each of them: the jQuery object, an object of parsed properties, and
	 * any custom properties passed in the args.
	 * 
	 * The params object accepts the following:
	 * params = {
	 * 	'args' : {
	 * 		'elmt' : {}, //The jQuery object that this event is attached to.
	 * 		'custom' : {} //Mixed, any custom params that should be passed to the handler functions.
	 * 	}
	 * }
	 * @member Syn.Tracking.TrackLink
	 * @param {Object} params
	 */
	record: function(params)
	{
		if (typeof params === 'object'
			&& typeof params.args === 'object'
			&& typeof params.args.elmt === 'object'
			&& params.args.elmt instanceof jQuery === true
			&& typeof Syn.Config.TrackLink === 'object'
			&& typeof Syn.Config.TrackLink.handlers === 'object')
		{
			//We have all of the require params, do tracking now.
			//Figure out if this is the default call or not.
			var isDefaultCall = (typeof params.args.custom === 'object' && typeof params.args.custom[0] === 'object' && typeof params.args.custom[0].default_call === 'boolean') ? params.args.custom[0].default_call : false;
			if (isDefaultCall === true)
			{
				delete params.args.custom;
			}
			//Get the properties from the passed in object.
			var props = {};
			props.text = params.args.elmt.text();
			props.title = params.args.elmt.attr('title');
			props.href = params.args.elmt.attr('href');
			props.name = params.args.elmt.attr('name');
			props.rel = params.args.elmt.attr('rel');
			props.rev = params.args.elmt.attr('rev');
			props.target = params.args.elmt.attr('target');
			props.name_parameters = {};
			var hash;
			var hashes = props.name.slice(props.name.indexOf('?') + 1).split('&');
			for(var i = 0; i < hashes.length; i++)
			{
				if (hashes[i].indexOf('=') > -1)
				{
					hash = hashes[i].split('=');
					props.name_parameters[hash[0]] = hash[1];
					//If ignore is one of the params in the name attribute and this is the default call, dont track this link.
					if (hash[0].toLowerCase() === 'ignore' && isDefaultCall === true)
					{
						return;
					}
				}
			}
			//If the 'Syn.Tracking.tl' function is in the onClick and this is the default call, dont track this link.
			//This is a 'best guess' to try an eliminate any double tracking. But if javascript is used to add the
			//call to the link, double tracking will occur. To avoid this, add 'name="ignore=true"' to the anchor tag.
			if (String($(params.args.elmt).attr('onclick')).indexOf('Syn.Tracking.tl(') > -1 && isDefaultCall === true)
			{
				return;
			}
			//Loop through the handlers and call each of them.
			for (var j in Syn.Config.TrackLink.handlers)
			{
				if (typeof Syn.Config.TrackLink.handlers[j] === 'function')
				{
					if (typeof params.args.custom !== 'undefined')
					{
						Syn.Config.TrackLink.handlers[j](params.args.elmt, props, params.args.custom);
					}
					else
					{
						Syn.Config.TrackLink.handlers[j](params.args.elmt, props);
					}
				}
			}
		}
	},

	/**
	 * Add a handler to be called with TrackLink
	 * Call this function to add a handler function to be called when the
	 * TrackLink tracking module is called.
	 * The following parameters are passed to the handler function in this order:
	 * object: The jQuery element that received the click event.
	 * object: An object with the following properties of the element:
	 *	href
	 * 	name
	 * 	name_parameters (The value of the name tag, split by ? and & characters.)
	 * 	rel
	 * 	rev
	 * 	target
	 * 	text
	 * 	title
	 * mixed: Any custom params that are passed to the record method via it's arguments. See the docblock for details.
	 * @member Syn.Tracking.TrackLink
	 * @param {mixed} handler
	 */
	addHandler: function(handler)
	{
		if (typeof Syn.Config.TrackLink === 'undefined')
		{
			Syn.Config.TrackLink = {};
		}
		if (typeof Syn.Config.TrackLink.handlers === 'undefined')
		{
			Syn.Config.TrackLink.handlers = [];
		}
		Syn.Config.TrackLink.handlers.push(handler);
	}
};
//Add link tracking to all links on the page:
$(document).ready(function(){
	$('a').live('click', function(){
		return Syn.Tracking.tl($(this), {'default_call' : true});
	});
});

/**
 * Shorthand function to do manual link tracking
 * using the TrackLink module above.
 * The first param should be the element to track.
 * Any additional arguments will be passed as custom arguments
 * to the Syn.Tracking.TrackLink module.
 * @member Syn.Tracking 
 * @param {Object} The element to use.
 */
Syn.Tracking.tl = function(elmt)
{
	if (typeof elmt === 'object')
	{
		var custom = [];
		for(var i = 1; i < arguments.length; i++)
		{
			custom.push(arguments[i]);
		}
		$(elmt).track({
			'event' : 'instant',
			'module' : 'TrackLink',
			'args' :
			{
				'elmt' : $(elmt),
				'custom' : custom
			},
			'defer' : '0'
		});
	}
	return true;
};

/**
 * Tracking module for images
 */
Syn.Tracking.Image =
{
	/**
	 * Record parameters to the tracking system
	 * @member Syn.Tracking.Image 
	 * @param {Object} params
	 */
	record: function(params)
	{
		var args = params.args;
		var dt   = new Date();
		args.ts = dt.getTime();
		$(document).ready(function(){
			var img = document.createElement('img');
			var portal_root = Syn.Config.Framework ? Syn.Config.Framework.PortalRoot : Syn.Config.PortalRoot;
			img.src = portal_root + 'images/track/track.gif?' + jQuery.param( args );
			$(document.body).append(img);
		});
	}
};

/**
 * Tracking Module for Omniture
 */
Syn.Tracking.Omniture =
{
	/**
	 * intervalId
	 * The id assigned to the interval function by setInterval.
	 * @member Syn.Tracking.Omniture
	 */
	intervalId : 0,

	/**
	 * intervalCount
	 * The number of times the interval function has fired.
	 * @member Syn.Tracking.Omniture
	 */
	intervalCount : 0,

	/**
	 * intervalMaxCount
	 * The max number of times the interval function should be called.
	 * Multiply this number by 100ms to determin how long to wait for
	 * the s object to initialized.
	 * @member Syn.Tracking.Omniture
	 */
	intervalMaxCount : 50,

	/**
	 * savedParams
	 * An array of params. This is used when the Syn.Tracking.Omniture.record
	 * function is called before the s object is initialized. Any params sent
	 * to that function are stored in here until the s object is initialized.
	 * @member Syn.Tracking.Omniture
	 */
	savedParams : [],

	/**
	 * Record parameters to the tracking system
	 *
	 * This function uses omniture's tracking functions
	 * (s.t() and s.tl()) to track various data.
	 * In order for this to work, the Synacor_Analytics_Component_Omniture
	 * component must be included on the page.
	 * This function will return even if that is not the case, or if it
	 * hasn't initialized yet. It will not throw any errors.
	 * If the Omniture s object has not initialized yet, this function
	 * will store the passed params in an array.
	 *
	 * The params object accepts the following:
	 * params = {
	 * 	'event' : '', //'load' | 'ready' fires the s.t() function, anything else fires the s.tl() function.
	 * 		      //Typically, you would want to use the s.tl() function with links, so you'd specity
	 * 		      //the 'click' event here.
	 * 	'args' : {
	 * 		'linkTrackVars' : '', //Which 's.' variables to track (comma seperated)
	 * 		'linkTrackEvents' : '', //Which 's.' events to track (comma seperated)
	 * 		'linkType' : 'o', //'o' is default (custom link), 'e' is exit link, 'd' is download link
	 * 		'linkName' : '', //The link name
	 * 		'svalues' : { //An object of values to write to the s object.
	 * 			'param1' : 'myvalue' //Example value
	 * 		},
	 * 		'mappings' : { //An object of keys and values to map to svalues and then write to the s object.
	 * 			'map_key_1' : 'map_value_1' //Example value
	 * 		},
	 * 		'overwrite' : false //Boolean - if true, and this request is to be queued ('event: ready or live),
	 * 			values will not be appended. (Used in link tracking.) Please
	 * 			see https://wiki.corp.synacor.com/display/Product/Omniture#Omniture-Overwritingsvalues
	 * 			for further details.
	 * 	}
	 * }
	 *
	 * Please see the following wiki article for a detailed description on how to use this
	 * tracking module.
	 * Omniture, Google Analytics jQuery track documentation:
	 * https://wiki.corp.synacor.com/display/Insights/Omniture,+Google+Analytics+jQuery+track+documentation
	 *
	 * @member Syn.Tracking.Omniture
	 * @param {Object} params
	 */
	record: function(params)
	{
		var args = params.args;

		//Most use cases:
		//Omniture is not setup yet, store the values for later use.
		if (typeof s === 'undefined' || typeof s.t !== 'function')
		{
			//Values should be included with default Omniture call
			if ((params.event === 'load' || params.event === 'ready'))
			{
				//If we have svalues, store them.
				if (typeof args.svalues !== 'undefined')
				{
					//If we are supposed to overwrite values instead of appending, do that.
					if (typeof args.overwrite === 'boolean' && args.overwrite === true)
					{
						this.setSValues(args.svalues);
					}
					else
					{
						this.setSValues(args.svalues, ',');
					}
				}
				//If we have mapped values, do the mapping and then store them.
				if (typeof args.mappings !== 'undefined')
				{
					this.setMappings(args.mappings, ',');
				}
			}
			//A seperate Omniture call should be made
			else
			{
				this.savedParams.push(params);
				this.intervalId = setInterval("Syn.Tracking.Omniture.intervalHandler()", 100);
			}
			return;
		}

		//Omniture is now initialized, make a request now.

		//If we were passed mappings for this call, deal with them.
		if (args.mappings)
		{
			this.setMappings(args.mappings, ',');
		}

		//Get any stored values.
		if (Syn.Config.Omniture)
		{
			var om = Syn.Config.Omniture;
			if (om.s)
			{
				for (var k in om.s)
				{
					if (typeof om.s[k] !== 'undefined')
					{
						s[k] = om.s[k];
					}
				}
			}
		}
		
		//Figure out the call type.
		//If event is load or ready, default call.
		//If something else, link tracking call.
		var callType = (params.event === 'load' ||  params.event === 'ready') ? 'default' : 'linktrack';

		//Deal with the linkTrack stuff.
		s.linkTrackVars = (args.linkTrackVars) ? args.linkTrackVars : 'None';
		s.linkTrackEvents = (args.linkTrackEvents) ? args.linkTrackEvents : 'None';
		s.linkTrackVars += (s.linkTrackEvents !== 'None' && s.linkTrackEvents !== '') ? ',events' : '';
		var linkType = (args.linkType) ? args.linkType : 'o';
		var linkName = (args.linkName) ? args.linkName : '';

		//If we were passed any svalues for this call, deal with them.
		if (args.svalues)
		{
			for (k in args.svalues)
			{
				if (typeof args.svalues[k] === 'string')
				{
					s[k] = args.svalues[k];
					//If this is a linktrack call, add any svalues passed to the linkTrackVars variable.
					//Otherwise, Omniture will ignore them.
					if (callType === 'linktrack')
					{
						s.linkTrackVars += ',' + k;
					}
				}
			}
		}

		//Convert mappings now.
		for (k in s)
		{
			if (k.substr(0, 9) === 'mappings_')
			{
				if (typeof Syn.Config.Omniture.mappings[k.substr(9)] !== 'undefined')
				{
					s[Syn.Config.Omniture.mappings[k.substr(9)]] = s[k];
				}
				delete s[k];
			}
		}

		//Do Tracking Now
		if (callType === 'default')
		{
			//Default Omniture Call (s.t())
			s.t();
		}
		else
		{
			//Link Tracking Call (s.tl())
			var s_code = s.tl(true, linkType, linkName);
			if (s_code)
			{
				$(document.body).append(s_code);
			}
		}
	},

	/**
	 * Check to see if the s object is defined.
	 * This checks the s object to see if it's
	 * been defined yet. If not, it just returns.
	 * If so, it loops through the savedParams
	 * array and calls the record function on each
	 * element.
	 * If the intervalMaxCount has been exceeded, this
	 * will stop the interval by calling clearInterval.
	 * @member Syn.Tracking.Omniture
	 */
	intervalHandler: function()
	{
		this.intervalCount++;
		if (typeof s !== 'undefined' || this.intervalCount > this.intervalMaxCount)
		{
			clearInterval(this.intervalId);
			if (typeof s !== 'undefined')
			{
				for (var i in this.savedParams)
				{
					if (typeof this.savedParams[i] === 'object')
					{
						this.record(this.savedParams[i]);
					}
				}
				this.savedParams = [];
			}
		}
	},

	/**
	 * Add values to the s array.
	 * This adds values to the Syn.Config.Omniture.s array
	 * so they can be sent to Omniture.
	 * You should not need to call this function for most uses.
	 * It is used internally by the record function.
	 * But it could be used as a way to set global properties for all
	 * future Omniture calls, or as a place to store information that
	 * needs to be sent to Omniture on the next call.
	 * If you dont set appendChar, any existing values in the s array
	 * will be overwritten. If you specify a string, that character
	 * will be used to append the values in the s array. So, you could
	 * use a comma (',') for example.
	 * @member Syn.Tracking.Omniture
	 * @param {Object} svalues
	 * @param {mixed} appendChar If omitted, values will not be appended. If a string, this string will be used to append values if they already exist.
	 */
	setSValues: function(svalues, appendChar)
	{
		appendChar = (typeof appendChar === 'undefined') ? false : appendChar;
		if (typeof Syn.Config.Omniture === 'undefined')
		{
			Syn.Config.Omniture = {};
		}
		if (typeof Syn.Config.Omniture.s == 'undefined')
		{
			Syn.Config.Omniture.s = {};
		}
		for (var i in svalues)
		{
			if (typeof Syn.Config.Omniture.s[i] !== 'undefined' && Syn.Config.Omniture.s[i] !== '' && typeof appendChar === 'string')
			{
				Syn.Config.Omniture.s[i] += appendChar + svalues[i];
			}
			else
			{
				Syn.Config.Omniture.s[i] = svalues[i];
			}
		}
	},

	/**
	 * Add values to the mappings array.
	 * This is used to place mappings into a temporary storage
	 * that is used later by the record method above.
	 * It functions similarly to the setSValues method above.
	 * @member Syn.Tracking.Omniture
	 * @param {Object} values
	 * @param {mixed} appendChar If omitted, values will not be appended. If a string, this string will be used to append values if they already exist.
	 */
	setMappings: function(values, appendChar)
	{
		appendChar = (typeof appendChar === 'undefined') ? false : appendChar;
		var newvalues = {};
		for (var i in values)
		{
			if (typeof values[i] === 'string')
			{
				newvalues['mappings_' + i] = values[i];
			}
		}
		this.setSValues(newvalues, appendChar);
	},

	/**
	 * Method to lock (or pause) Omniture
	 * so that the automatic call doesn't
	 * happen on document.ready.
	 * Use this if you have a reason to delay the
	 * initial call to Omniture for some reason.
	 * When you are ready for Omniture to make it's
	 * call, call the unlock method below.
	 * For each time you call lock, you must
	 * also call unlock. This is used so that if you
	 * have multiple components that want to lock
	 * Omniture, each one of them must call unlock.
	 * @member Syn.Tracking.Omniture
	 */
	lock: function()
	{
		if (typeof Syn.Config.Omniture === 'undefined')
		{
			Syn.Config.Omniture = {};
		}
		if (typeof Syn.Config.Omniture.lockCount !== 'number' || Syn.Config.Omniture.lockCount <= 0)
		{
			Syn.Config.Omniture.lockCount = 1;
		}
		else
		{
			Syn.Config.Omniture.lockCount += 1;
		}
	},

	/**
	 * Method to unlock Omniture.
	 * This has no effect unless lock
	 * has already been called.
	 * See the above doc block for the lock
	 * method for more information.
	 * @member Syn.Tracking.Omniture
	 */
	unlock: function()
	{
		if (typeof Syn.Config.Omniture === 'undefined')
		{
			Syn.Config.Omniture = {};
		}
		if (typeof Syn.Config.Omniture.lockCount === 'number' && Syn.Config.Omniture.lockCount > 0)
		{
			Syn.Config.Omniture.lockCount -= 1;
		}
	}
};

jQuery.fn.extend(
{
	/**
	 * Wrapper over bind that enables you to connect events to objects, not just callbacks
	 *  modules: The tracking modules to use
	 *  args:    Tracking information that should be recorded
	 *  event:   Event to trigger the tracking
	 *  live:    Make bindings persist when altering the DOM
	 *  defer:   Amount of time between event and calling of the tracking method
	 * 		This can also be:
	 * 		'unload' - When they leave this page.
	 * 		'load' - When they load the next page (only ones this js file is loaded on)
	 * 		Any thing else is just passed to the tracking module.
	 *  toLower: Convert the elements in args to lower case
	 *
	 * @param {Object} params An object containing the configuration settings
	 *
	 */
	track: function( params )
	{
		if (!params['module'] || params['module'] == 'Default')
		{
			params['module'] = (Syn.Config.Framework.DefaultTrackingModule) ? Syn.Config.Framework.DefaultTrackingModule : 'Image';
		}

		//Allows for tracking through multiple modules at once by comma separating them
		var modules = params.module.split(',');
		var args    = params.args;
		var ev_t    = params.event;
		var live    = params.live;
		var defer   = params.defer;
		var toLower = params.toLower;
		var pageUri = params.pageUri;

		//Make sure we have at least one valid module
		var module;
		var validModule = false;

		for (var ii in modules)
		{
			module = modules[ii];

			if ( Syn.Tracking[module] )
			{
				validModule = true;
				break;
			}
		}

		if (!validModule)
		{
			return this;
		}

		if (pageUri !== null && typeof pageUri === 'string' && pageUri.substr(0,7) == 'page://')
		{
			var pageName = (/([^\/]+)\/$/.exec(pageUri));
			if (typeof pageName === 'array' && pageName[1])
			{
				params.args.page = pageName[1];
			}
		}

		if (toLower === true)
		{
			for (var j in params.args)
			{
				if (typeof params.args[j] === 'string')
				{
					params.args[j] = params.args[j].toLowerCase();
				}
			}
		}

		//Function that gets run whether instant or bind
		var action = function()
		{
			var module;
			var params_array;
			for (var ii in modules)
			{
				module = modules[ii];

				//If the module does not exist, skip it
				if ( !Syn.Tracking[module] )
				{
					continue;
				}

				if (typeof params.defer === 'string' && params.defer === 'unload')
				{
					$(window).unload(function()
						{
							Syn.Tracking[module].record(params);
						}
					);
				}
				else if (typeof params.defer === 'string' && params.defer === 'load')
				{
					params_array = $.cookie('syntrack_defer');
					if (params_array === null)
					{
						params_array = [];
						params_array[params_array.length] = params;
					}
					else
					{
						params_array = json.deserialize(params_array);
						params_array[params_array.length] = params;
					}
					var params_serialized = json.serialize(params_array);
					if (params_serialized.length > 2000)
					{
						//If the serialized params array is longer than 2000 characters, do tracking now instead of pushing to cookie.
						Syn.Tracking[module].record(params);
						$.cookie('syntrack_defer', null, {path: '/'});
					}
					else
					{
						//Push params array to cookie.
						$.cookie('syntrack_defer', params_serialized, {path: '/'});
					}
				}
				else if (typeof params.defer === 'number')
				{
					setTimeout(function()
						{
							Syn.Tracking[module].record(params);
						},
						params.defer
					);
				}
				else
				{
					Syn.Tracking[module].record(params);
				}
			}
			return true;
		};

		if (ev_t == 'instant')
		{
			//Run action now
			action();
		}
		else
		{
			//Return the results of the bind
			return this[ live ? 'live' : 'bind' ]( ev_t, function (ev) 
			{
				action();
			}); 
		}
	}
});

/**
 * For tracking the syntrack_defer cookie if present
 * This must be called inline, before document.ready.
 */
function syntrack_defer()
{
	var params_array = $.cookie('syntrack_defer');

	if (params_array)
	{
		params_array = json.deserialize(params_array);

		if (params_array)
		{
			for (var i in params_array)
			{
				if (params_array[i].module)
				{
					params_array[i].event = 'ready';
					params_array[i].defer = '0';
					$(document).track(params_array[i]);
				}
			}
		}

		//Delete the cookie so we don't track it again
		$.cookie('syntrack_defer', null, {path: '/'});
	}
}
syntrack_defer();


})(Syn.$);
;
/***** en_US/globals/javascripts/framework/synjsextensions.js *****/
Number.prototype.NaN0 = function()
{ 
	return isNaN(this) ? 0 : this;
};;
/***** en_US/globals/javascripts/framework/synimageloader.js *****/
/*
 * Viewport - jQuery selectors for finding elements in viewport
 *
 * Copyright (c) 2008-2009 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *  http://www.appelsiini.net/projects/viewport
 *
 */
(function($) {

    $.belowthefold = function(element, settings) {
        var fold = $(window).height() + $(window).scrollTop();
        return fold <= $(element).offset().top - settings.threshold;
    };

    $.abovethetop = function(element, settings) {
        var top = $(window).scrollTop();
        return top >= $(element).offset().top + $(element).height() - settings.threshold;
    };

    $.rightofscreen = function(element, settings) {
        var fold = $(window).width() + $(window).scrollLeft();
        return fold <= $(element).offset().left - settings.threshold;
    };

    $.leftofscreen = function(element, settings) {
        var left = $(window).scrollLeft();
        return left >= $(element).offset().left + $(element).width() - settings.threshold;
    };

    $.inviewport = function(element, settings) {
        return !$.rightofscreen(element, settings) && !$.leftofscreen(element, settings) && !$.belowthefold(element, settings) && !$.abovethetop(element, settings);
    };

    $.extend($.expr[':'], {
        "below-the-fold": function(a, i, m) {
            return $.belowthefold(a, {threshold : 0});
        },
        "above-the-top": function(a, i, m) {
            return $.abovethetop(a, {threshold : 0});
        },
        "left-of-screen": function(a, i, m) {
            return $.leftofscreen(a, {threshold : 0});
        },
        "right-of-screen": function(a, i, m) {
            return $.rightofscreen(a, {threshold : 0});
        },
        "in-viewport": function(a, i, m) {
            return $.inviewport(a, {threshold : 0});
        }
    });


})(Syn.$);

(function($){

	var scrolling = false;

	$(document).ready( function()
	{
		$('pre.scroll_loader:in-viewport').showComment();
	});

	$(window).scroll( function()
	{
		scrolling = true;
	});

	// Prevent scroll handlers from stacking
	setInterval( function()
	{
		if (scrolling)
		{
			scrolling = false;
			$('pre.scroll_loader').showComment();
		}
	}, 250);

})(Syn.$);
;
/***** en_US/globals/javascripts/framework/synads.js *****/
(function($){

/**
 * synads.js
 * This finds all spans with a class name of 'ad_iframe_comment' and
 * calls the showComment function on them.
 * This is used so that we can load ads after all other portal contents load.
 * This looks for html the looks like the following:
 * <span class="ad_iframe_comment"><!-- <iframe src="..."></iframe> --></span>
 * And it makes it look like this:
 * <iframe src="..."></iframe>
 */
$(window).bind('later', function(){
	$('span.ad_iframe_comment').showComment();
});


})(Syn.$);
;
/***** en_US/globals/javascripts/3rdparty/dd.js *****/
/**
* DD_roundies, this adds rounded-corner CSS in standard browsers and VML sublayers in IE that accomplish a similar appearance when comparing said browsers.
* Author: Drew Diller
* Email: drew.diller@gmail.com
* URL: http://www.dillerdesign.com/experiment/DD_roundies/
* Version: 0.0.2a -  preview 2008.12.26
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_roundies/#license
*
* Usage:
* DD_roundies.addRule('#doc .container', '10px 5px'); // selector and multiple radii
* DD_roundies.addRule('.box', 5, true); // selector, radius, and optional addition of border-radius code for standard browsers.
* 
* Just want the PNG fixing effect for IE6, and don't want to also use the DD_belatedPNG library?  Don't give any additional arguments after the CSS selector.
* DD_roundies.addRule('.your .example img');
**/

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('t K={16:\'K\',1L:G,1M:G,1d:G,2f:y(){u(D.2g!=8&&D.1N&&!D.1N[q.16]){q.1L=M;q.1M=M}17 u(D.2g==8){q.1d=M}},2h:D.2i,1O:[],1b:{},2j:y(){u(q.1L||q.1M){D.1N.2L(q.16,\'2M:2N-2O-2P:x\')}u(q.1d){D.2Q(\'<?2R 2S="\'+q.16+\'" 2T="#1P#2k" ?>\')}},2l:y(){t a=D.1k(\'z\');D.2m.1w.1Q(a,D.2m.1w.1w);u(a.12){2n{t b=a.12;b.1x(q.16+\'\\\\:*\',\'{1l:2U(#1P#2k)}\');q.12=b}2o(2p){}}17{q.12=a}},1x:y(a,b,c){u(1R b==\'1S\'||b===2V){b=0}u(b.2W.2q().1y(\'2X\')==-1){b=b.2q().2Y(/[^0-9 ]/g,\'\').1T(\' \')}H(t i=0;i<4;i++){b[i]=(!b[i]&&b[i]!==0)?b[C.1e((i-2),0)]:b[i]}u(q.12){u(q.12.1x){t d=a.1T(\',\');H(t i=0;i<d.1U;i++){q.12.1x(d[i],\'1l:2Z(K.1V.2r(q, [\'+b.1W(\',\')+\']))\')}}17 u(c){t e=b.1W(\'F \')+\'F\';q.12.1z(D.2s(a+\' {Q-1f:\'+e+\'; -30-Q-1f:\'+e+\';}\'));q.12.1z(D.2s(a+\' {-1A-Q-1m-1n-1f:\'+b[0]+\'F \'+b[0]+\'F; -1A-Q-1m-1X-1f:\'+b[1]+\'F \'+b[1]+\'F; -1A-Q-1Y-1X-1f:\'+b[2]+\'F \'+b[2]+\'F; -1A-Q-1Y-1n-1f:\'+b[3]+\'F \'+b[3]+\'F;}\'))}}17 u(q.1d){q.1O.31({\'2t\':a,\'2u\':b})}},2v:y(a){2w(32.33){I\'z.Q\':I\'z.34\':I\'z.1B\':q.1o(a);13;I\'z.2x\':q.1Z(a);13;I\'z.1p\':I\'z.2y\':I\'z.2z\':q.1o(a);13;I\'z.20\':a.18.z.20=(a.z.20==\'S\')?\'S\':\'35\';13;I\'z.21\':q.22(a);13;I\'z.1c\':a.18.z.1c=a.z.1c;13}},1o:y(a){a.14.23=\'\';q.2A(a);q.1Z(a);q.1C(a);q.1D(a);q.24(a);q.2B(a);q.22(a)},22:y(a){u(a.W.21.1y(\'36\')!=-1){t b=a.W.21;b=1g(b.37(b.25(\'=\')+1,b.25(\')\')),10)/2C;H(t v 1h a.x){a.x[v].1i.38=b}}},2A:y(a){u(!a.W){1q}17{t b=a.W}a.14.1p=\'\';a.14.1E=\'\';t c=(b.1p==\'2D\');t d=M;u(b.1E!=\'S\'||a.1F){u(!a.1F){a.J=b.1E;a.J=a.J.39(5,a.J.25(\'")\')-5)}17{a.J=a.26}t e=q;u(!e.1b[a.J]){t f=D.1k(\'3a\');f.1r(\'3b\',y(){q.1s=q.3c;q.1t=q.3d;e.1D(a)});f.3e=e.16+\'3f\';f.14.23=\'1l:S; 1j:27; 1m:-2E; 1n:-2E; Q:S;\';f.26=a.J;f.2F(\'1s\');f.2F(\'1t\');D.2G.1Q(f,D.2G.1w);e.1b[a.J]=f}a.x.Z.1i.26=a.J;d=G}a.x.Z.2H=!d;a.x.Z.1G=\'S\';a.x.1u.2H=!c;a.x.1u.1G=b.1p;a.14.1E=\'S\';a.14.1p=\'2D\'},1Z:y(a){a.x.1H.1G=a.W.2x},1C:y(a){t c=[\'N\',\'19\',\'1a\',\'O\'];a.P={};H(t b=0;b<4;b++){a.P[c[b]]=1g(a.W[\'Q\'+c[b]+\'U\'],10)||0}},1D:y(c){t e=[\'O\',\'N\',\'U\',\'V\'];H(t d=0;d<4;d++){c.E[e[d]]=c[\'3g\'+e[d]]}t f=y(a,b){a.z.1n=(b?0:c.E.O)+\'F\';a.z.1m=(b?0:c.E.N)+\'F\';a.z.1s=c.E.U+\'F\';a.z.1t=c.E.V+\'F\'};H(t v 1h c.x){t g=(v==\'Z\')?1:2;c.x[v].3h=(c.E.U*g)+\', \'+(c.E.V*g);f(c.x[v],M)}f(c.18,G);u(K.1d){c.x.1H.z.28=\'-3i\';u(1R c.P==\'1S\'){q.1C(c)}c.x.1u.z.28=(c.P.N-1)+\'F \'+(c.P.O-1)+\'F\'}},24:y(j){t k=y(a,w,h,r,b,c,d){t e=a?[\'m\',\'1I\',\'l\',\'1J\',\'l\',\'1I\',\'l\',\'1J\',\'l\']:[\'1J\',\'l\',\'1I\',\'l\',\'1J\',\'l\',\'1I\',\'l\',\'m\'];b*=d;c*=d;w*=d;h*=d;t R=r.2I();H(t i=0;i<4;i++){R[i]*=d;R[i]=C.3j(w/2,h/2,R[i])}t f=[e[0]+C.11(0+b)+\',\'+C.11(R[0]+c),e[1]+C.11(R[0]+b)+\',\'+C.11(0+c),e[2]+C.15(w-R[1]+b)+\',\'+C.11(0+c),e[3]+C.15(w+b)+\',\'+C.11(R[1]+c),e[4]+C.15(w+b)+\',\'+C.15(h-R[2]+c),e[5]+C.15(w-R[2]+b)+\',\'+C.15(h+c),e[6]+C.11(R[3]+b)+\',\'+C.15(h+c),e[7]+C.11(0+b)+\',\'+C.15(h-R[3]+c),e[8]+C.11(0+b)+\',\'+C.11(R[0]+c)];u(!a){f.3k()}t g=f.1W(\'\');1q g};u(1R j.P==\'1S\'){q.1C(j)}t l=j.P;t m=j.2J.2I();t n=k(M,j.E.U,j.E.V,m,0,0,2);m[0]-=C.1e(l.O,l.N);m[1]-=C.1e(l.N,l.19);m[2]-=C.1e(l.19,l.1a);m[3]-=C.1e(l.1a,l.O);H(t i=0;i<4;i++){m[i]=C.1e(m[i],0)}t o=k(G,j.E.U-l.O-l.19,j.E.V-l.N-l.1a,m,l.O,l.N,2);t p=k(M,j.E.U-l.O-l.19+1,j.E.V-l.N-l.1a+1,m,l.O,l.N,1);j.x.1u.29=o;j.x.Z.29=p;j.x.1H.29=n+o;q.2K(j)},2B:y(a){t s=a.W;t b=[\'N\',\'O\',\'19\',\'1a\'];H(t i=0;i<4;i++){a.14[\'1B\'+b[i]]=(1g(s[\'1B\'+b[i]],10)||0)+(1g(s[\'Q\'+b[i]+\'U\'],10)||0)+\'F\'}a.14.Q=\'S\'},2K:y(e){t f=K;u(!e.J||!f.1b[e.J]){1q}t g=e.W;t h={\'X\':0,\'Y\':0};t i=y(a,b){t c=M;2w(b){I\'1n\':I\'1m\':h[a]=0;13;I\'3l\':h[a]=0.5;13;I\'1X\':I\'1Y\':h[a]=1;13;1P:u(b.1y(\'%\')!=-1){h[a]=1g(b,10)*0.3m}17{c=G}}t d=(a==\'X\');h[a]=C.15(c?((e.E[d?\'U\':\'V\']-(e.P[d?\'O\':\'N\']+e.P[d?\'19\':\'1a\']))*h[a])-(f.1b[e.J][d?\'1s\':\'1t\']*h[a]):1g(b,10));h[a]+=1};H(t b 1h h){i(b,g[\'2y\'+b])}e.x.Z.1i.1j=(h.X/(e.E.U-e.P.O-e.P.19+1))+\',\'+(h.Y/(e.E.V-e.P.N-e.P.1a+1));t j=g.2z;t c={\'T\':1,\'R\':e.E.U+1,\'B\':e.E.V+1,\'L\':1};t k={\'X\':{\'2a\':\'L\',\'2b\':\'R\',\'d\':\'U\'},\'Y\':{\'2a\':\'T\',\'2b\':\'B\',\'d\':\'V\'}};u(j!=\'2c\'){c={\'T\':(h.Y),\'R\':(h.X+f.1b[e.J].1s),\'B\':(h.Y+f.1b[e.J].1t),\'L\':(h.X)};u(j.1y(\'2c-\')!=-1){t v=j.1T(\'2c-\')[1].3n();c[k[v].2a]=1;c[k[v].2b]=e.E[k[v].d]+1}u(c.B>e.E.V){c.B=e.E.V+1}}e.x.Z.z.3o=\'3p(\'+c.T+\'F \'+c.R+\'F \'+c.B+\'F \'+c.L+\'F)\'},1v:y(a){t b=q;2d(y(){b.1o(a)},1)},2e:y(a){q.1D(a);q.24(a)},1V:y(b){q.z.1l=\'S\';u(!q.W){1q}17{t c=q.W}t d={3q:G,3r:G,3s:G,3t:G,3u:G,3v:G,3w:G};u(d[q.1K]===G){1q}t e=q;t f=K;q.2J=b;q.E={};t g={3x:\'2e\',3y:\'2e\'};u(q.1K==\'A\'){t i={3z:\'1v\',3A:\'1v\',3B:\'1v\',3C:\'1v\'};H(t a 1h i){g[a]=i[a]}}H(t h 1h g){q.1r(\'3D\'+h,y(){f[g[h]](e)})}q.1r(\'3E\',y(){f.2v(e)});t j=y(a){a.z.3F=1;u(a.W.1j==\'3G\'){a.z.1j=\'3H\'}};j(q.3I);j(q);q.18=D.1k(\'3J\');q.18.14.23=\'1l:S; 1j:27; 28:0; 1B:0; Q:0; 3K:S;\';q.18.z.1c=c.1c;q.x={\'1u\':M,\'Z\':M,\'1H\':M};H(t v 1h q.x){q.x[v]=D.1k(f.16+\':3L\');q.x[v].1i=D.1k(f.16+\':3M\');q.x[v].1z(q.x[v].1i);q.x[v].3N=G;q.x[v].z.1j=\'27\';q.x[v].z.1c=c.1c;q.x[v].3O=\'1,1\';q.18.1z(q.x[v])}q.x.Z.1G=\'S\';q.x.Z.1i.3P=\'3Q\';q.3R.1Q(q.18,q);q.1F=G;u(q.1K==\'3S\'){q.1F=M;q.z.3T=\'3U\'}2d(y(){f.1o(e)},1)}};2n{D.3V("3W",G,M)}2o(2p){}K.2f();K.2j();K.2l();u(K.1d&&D.1r&&K.2h){D.1r(\'3X\',y(){u(D.3Y==\'3Z\'){t d=K.1O;t e=d.1U;t f=y(a,b,c){2d(y(){K.1V.2r(a,b)},c*2C)};H(t i=0;i<e;i++){t g=D.2i(d[i].2t);t h=g.1U;H(t r=0;r<h;r++){u(g[r].1K!=\'40\'){f(g[r],d[i].2u,r)}}}}})}',62,249,'||||||||||||||||||||||||||this|||var|if|||vml|function|style|||Math|document|dim|px|false|for|case|vmlBg|DD_roundies||true|Top|Left|bW|border||none||Width|Height|currentStyle|||image||floor|styleSheet|break|runtimeStyle|ceil|ns|else|vmlBox|Right|Bottom|imgSize|zIndex|IE8|max|radius|parseInt|in|filler|position|createElement|behavior|top|left|applyVML|backgroundColor|return|attachEvent|width|height|color|pseudoClass|firstChild|addRule|search|appendChild|webkit|padding|vmlStrokeWeight|vmlOffsets|backgroundImage|isImg|fillcolor|stroke|qy|qx|nodeName|IE6|IE7|namespaces|selectorsToProcess|default|insertBefore|typeof|undefined|split|length|roundify|join|right|bottom|vmlStrokeColor|display|filter|vmlOpacity|cssText|vmlPath|lastIndexOf|src|absolute|margin|path|b1|b2|repeat|setTimeout|reposition|IEversion|documentMode|querySelector|querySelectorAll|createVmlNameSpace|VML|createVmlStyleSheet|documentElement|try|catch|err|toString|call|createTextNode|selector|radii|readPropertyChanges|switch|borderColor|backgroundPosition|backgroundRepeat|vmlFill|nixBorder|100|transparent|10000px|removeAttribute|body|filled|slice|DD_radii|clipImage|add|urn|schemas|microsoft|com|writeln|import|namespace|implementation|url|null|constructor|Array|replace|expression|moz|push|event|propertyName|borderWidth|block|lpha|substring|opacity|substr|img|onload|offsetWidth|offsetHeight|className|_sizeFinder|offset|coordsize|1px|min|reverse|center|01|toUpperCase|clip|rect|BODY|TABLE|TR|TD|SELECT|OPTION|TEXTAREA|resize|move|mouseleave|mouseenter|focus|blur|on|onpropertychange|zoom|static|relative|offsetParent|ignore|background|shape|fill|stroked|coordorigin|type|tile|parentNode|IMG|visibility|hidden|execCommand|BackgroundImageCache|onreadystatechange|readyState|complete|INPUT'.split('|'),0,{}));
/***** en_US/globals/javascripts/3rdparty/dd_init.js *****/
Syn.DD = {
	init: function()
	{
		if ( $.browser.msie && $.browser.version.substr(0,1)=='6' )
		{
			if (document.styleSheets[0].rules)
			{
				for (var i=0; i<document.styleSheets.length; i++)
				{
					var sheet = document.styleSheets[i];
					for (var j=0; j<sheet.rules.length; j++)
					{
						var rule = sheet.rules[j];
						if (  rule.style.background && rule.style.background.indexOf('.png') > -1  )
						{
							DD_roundies.addRule( rule.selectorText ); 
						}
					}
				}
			}
		}

		DD_roundies.addRule('.png');
		DD_roundies.addRule('.round', '10px');
		DD_roundies.addRule('.round_top', '10px 10px 0px 0px');
		DD_roundies.addRule('.round_bottom', '0px 0px 10px 10px');
		DD_roundies.addRule('.round_left', '10px 0px 0px 10px');
		DD_roundies.addRule('.round_right', '0px 10px 0px 10px');
		DD_roundies.addRule('.round_top_left', '10px 0px 0px 0px');
		DD_roundies.addRule('.round_top_right', '0px 10px 0px 0px');
		DD_roundies.addRule('.round_bottom_left', '0px 0px 0px 10px');
		DD_roundies.addRule('.round_bottom_right', '0px 0px 10px 0px');
	},

  fixPngImage: function(selector)
  {
    if ($.browser.msie && $.browser.version.substr(0,1)=='6' && !$(selector).hasClass('png'))
		{
			if ( $(selector).attr('src').indexOf('.png') > -1 )
			{
				$(selector).addClass('png');
			}
		}
  }
	
};

$(document).ready( Syn.DD.init );


;
/***** en_US/components/header/header_bar/scripts/header_bar.js *****/
/**
 * The Syn.HeaderBar Component Class
 */

/**
 * Create a Syn.HeaderBar component instance
 * @constructor
 */
Syn.HeaderBar = Syn.Component.extend(
{
	/**
	 * Tracking metadata.
	 */
	tracking_area: null,

	/**
	 * Initialize the component class.
	 * @param {array} config The config array for this component
	 */
	init: function(config)
	{
		//Init parent class
		this._super(config);
		this.tracking_area = config.tracking_area;
		$('.set_homepage').liveConnect('click', this, 'makeHome');
		this.setupTracking();
	},

	/**
	 * Method to make passed in url the homepage for the user
	 * @param {object} target The targeted dom object
	 * @param {object} event The event dom object
	 */
	makeHome: function(target, event)
	{
		// Handle IE
		if (document.all)
		{
			document.body.style.behavior = 'url(#default#homepage)';
			document.body.setHomePage($(target).attr('href'));
			return false;
		}

		// Fall back to Firefox
		alert('To make ' + $(target).attr('rel') + ' your homepage - \nGo to "Options" in the "Tools" Menu. Choose the "Main" Tab from the list on the top. Click on the "Use Current Page(s)" button.');
		return false;
	},

	/**
	 * Connect tracking events to links.
	 *
	 * @member Syn.HeaderBar
	 */
	setupTracking: function()
	{
		var self = this;
		var i = 1;

		this.find('a').each(function()
		{
			$(this).track({
				pageUri: Syn.Config.Framework.Page,
				args: {
					area: self.tracking_area,
					link: $(this).html(),
					position: i++
				},
				event: 'click',
				toLower: true
			});
		});
	}
});;
/***** en_US/components/search/scripts/search_bar.js *****/
/**
 * The Syn.SearchBar Component Class
 */
(function($) {

/**
 * Create a Syn.SearchBar component instance
 * @constructor
 */
Syn.SearchBar = Syn.Component.extend(
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * @member Syn.SearchBar
	 * @param {Object} config The configuration data structure
	 */
	init: function(config)
	{
		//Init parent class
		this._super(config);
		var urlObj = this.queryStrToObject(window.location.href);
		this.query = urlObj.q;
		//If the 'inc' param is in the url, don't auto-focus the search bar.
		if (typeof urlObj.inc !== 'undefined')
		{
			Syn.setPreventSearchBarFocus();
		}
		this.uniqueElmt('search_tabs').find('li > a').liveConnect('click', this, 'changeTab');
		this.getContext();
		this.setupTracking();
	},

	/**
	 * Track form searches
	 * @member Syn.SearchBar
	 */
	setupTracking: function()
	{
		//Get the header forms
		$('body').delegate('#header div.search_bar form', 'submit', function(){ //This uses delegate because live doesn't work with submit for ie
			//Use Syn.Tracking.tl() to track form sumission.
			Syn.Tracking.tl(this, {
				'text' : 'Search Bar',
				'title' : '',
				'href' : $(this).attr('action'),
				'name' : '',
				'rel' : '',
				'rev' : '',
				'target' : '',
				'lid' : 'search bar',
				'lpos' : 'header'
			});
		});
		//Get the footer form
		$('body').delegate('div.search_footer div.search_bar form', 'submit', function(){ //This uses delegate because live doesn't work with submit for ie
			//Use Syn.Tracking.tl() to track form sumission.
			Syn.Tracking.tl(this, {
				'text' : 'Search Bar',
				'title' : '',
				'href' : $(this).attr('action'),
				'name' : '',
				'rel' : '',
				'rev' : '',
				'target' : '',
				'lid' : 'search bar',
				'lpos' : 'footer'
			});
		});
	},

	/**
	 * Called on ajax update.
	 * @member Syn.SearchBar
	 * @param {Object} config The configuration data structure
	 */
	changeTab: function(dom, event)
	{
		var params = {};
		var hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for(var i = 0; i < hashes.length; i++)
		{
			hash = hashes[i].split('=');
			params[hash[0]] = hash[1];
		}
		params.type = $(dom).text();

		var temp_query = this.find('input.search_input').first().attr('value');
		if (!this.default_value)
		{
			if (temp_query != this.query)
			{
				this.user_query = temp_query;
			}
		}
		this.submit(params);
	},

	/**
	 * Called on ajax update complete
	 * Set the focus on the input field and persist the user's query.
	 * @member Syn.SearchBar
	 * @param {Object} config The configuration data structure
	 */
	onAjaxUpdate: function(config)
	{
		var search_input = this.find('input.search_input').first();

		// Place the focus on the search input for all browsers.
		search_input.focus();

		// Persist the user's query in the search input for all browsers.
		var temp_value = search_input.attr('value');
		this.default_value = null;

		switch (temp_value)
		{
			case this.query:
				search_input.attr('value', (this.user_query) ? this.user_query : this.query);
				break;
			case '':
				search_input.attr('value', (this.user_query) ? this.user_query : this.query);
				break;
			default:
				this.default_value = temp_value;
				search_input.attr('value', temp_value);
		}

		// IE's do not keep focus on the search input, so place the cursor at its end.
		if (document.body.createTextRange)
		{
			this.ieFocus(search_input);
		}
	},

	/**
	 * Function to get the context and add it to an input element.
	 * This is used to bucket search revenue.
	 * @member Syn.SearchBar
	 */
	getContext: function()
	{
		var path = window.location.href;
		var query_string = this.queryStrToObject(path);
		var context = query_string.context;

		if (context || query_string.src)
		{
			context = context || query_string.src;
		}
		else
		{
			var words = path.split('/');
			context = words[words.length -2];
			var channel = context.split('_channel');
			context = channel[0] || context;
		}

		$('#search_header_input_context').val(context);
	},

	/**
	 * Function to place the cursor at the end of the text input for IE.
	 * @member Syn.SearchBar
	 */
	ieFocus: function(search_input)
	{
		search_input.focus();
		var value = search_input.attr('value');
		search_input.attr('value', value);
	}
});

})(Syn.$);
;
/***** en_US/components/search/scripts/smartsearchbarfocus.js *****/
/**
 * This script is a fix for the instances where Flash objects in IE6
 * steal the focus away from the Googlebar without user input.
 */
(function($) {

/**
 * Set a flag in the DOM so the Googlebar knows not to set focus
 * after the page contents loads.
 *
 * @return DOM Event cascade fallthrough
 * @type Boolean
 */
Syn.setPreventSearchBarFocus = function()
{
	// Set the flag
	Syn.preventSearchBarFocus = true;

	// Fallthrough to other functionality bound to the focus event
	// for the current element.
	return true;
};

// When the DOM is loaded
$(document).ready(function()
{
	if (document.location.hash === '')
	{
		if (!Syn.preventSearchBarFocus)
		{
			// Set the focus to the Googlebar text input so long as it is visible and enabled.
			var search_input = $('#q:visible:enabled');
			var value = search_input.attr('value');
			search_input.focus().attr('value', value);
		}
	}
	else
	{
		// An anchor in the page URL overrides the search bar focus
		Syn.setPreventSearchBarFocus();
	}

	// Bind the Syn.setPreventSearchBarFocus function to all form
	// inputs on the page other than the Googlebar text input
	$(':input:not(#q)').bind('focus', Syn.setPreventSearchBarFocus);
});

// When all of the documents contents are loaded...
$(window).load(function()
{
	// If no form input in the document received focus while the document was loading,
	// set the focus to the Googlebar text input so long as it is visible and enabled.
	if (!Syn.preventSearchBarFocus)
	{
		var search_input = $('#q:visible:enabled');
		var value = search_input.attr('value');
		search_input.focus().attr('value', value);
	}

	// Unbind the Syn.setPreventSearchBarFocus function from all form
	// inputs on the page other than the Googlebar text input
	$(':input:not(#q)').unbind('focus', Syn.setPreventSearchBarFocus);

	// The flag and function object are of no use anymore. Remove them from the DOM.
	delete Syn.preventSearchBarFocus;
	delete Syn.setPreventSearchBarFocus;
});

})(Syn.$);
;
/***** en_US/components/omniture/javascripts/omniture.js *****/
( function($)
{

/**
 * omniture.js
 * Initialize the Omniture SiteCatalyst code
 * and call the $.track function on document.ready.
 */

/**
 * Global Omniture variables
 * This are global on purpose so that Omniture will work correctly.
 */
s_account = '';
s = {};

/**
 * @constructor
 */
Syn.Omniture = Syn.Component.extend (
{
	/**
	 * Used to track how long we've been locked,
	 * and if it's more than a few seconds, automatically
	 * unlock.
	 */
	intervalCount: 0,

	/**
	 * Init function to setup the class.
	 * This sets up any default params to pass to
	 * Omniture, and then on document ready, it initializes
	 * the Omniture code into the s object. And finnaly,
	 * it fires the initial page level tracking call to Omniture.
	 * @member Syn.Omniture
	 * @access public
	 * @param (object) config The configuration data structure.
	 * @return NULL
	 */
	init: function(config)
	{
		this._super(config);
		this.intervalId = 0;
		var self = this;
		Syn.Tracking.Omniture.setSValues(config.s, ',');
		this.saveObjectToConfig(config.mappings, 'mappings', true);
		this.saveObjectToConfig(config.trigger_events, 'trigger_events', true);
		Syn.Config.Omniture.cp = config.cp;
		this.setupLinkTracking();

		/**
		 * Setup Omniture at the specified time.
		 * (inline, document.ready, or window.later)
		 * The locking functionality below takes place
		 * AFTER this.
		 */
		if (typeof config.initTime === 'string' && config.initTime === 'inline')
		{
			//Initialize Omniture inline
			this.initOmniture();
		}
		else if (typeof config.initTime === 'string' && config.initTime === 'document')
		{
			//Initialize Omniture on document.ready
			$(document).ready(function(){self.initOmniture();});
		}
		else
		{
			//Initialize Omniture on window.later
			$(window).bind('later', function(){self.initOmniture();});
		}
	},

	/**
	 * Method to handle link tracking using Syn.Tracking.TrackLink.
	 * This adds a handler function to the Syn.Tracking.TrackLink module
	 * that is called when anchor tags are clicked on the page.
	 * @member Syn.Omniture
	 * @access public
	 */
	setupLinkTracking: function()
	{
		var self = this;
		Syn.Tracking.TrackLink.addHandler(function(elmt, props, custom){
			if (typeof custom === 'object'
				&& typeof custom[0] === 'string'
				&& typeof custom[1] === 'string')
			{
				//This is a custom track link call, not the default call.
				self.tlHandler(elmt, props, custom);
			}
			else
			{
				//This is the default track link call.
				self.linkTrackHandler(elmt, props, custom);
			}
		});
	},

	/**
	 * Called to handle s.tl calls from the setupLinkTracking method above.
	 * @member Syn.Omniture
	 * @access public
	 * @param (object) elmt
	 * @param (object) props
	 * @param (object) custom
	 */
	tlHandler: function(elmt, props, custom)
	{
		if (typeof this.config.link_tracking === 'object'
			&& typeof this.config.link_tracking.tl === 'object'
			&& typeof custom !== 'undefined'
			&& typeof custom[0] === 'string'
			&& typeof custom[1] === 'string')
		{
			//This is a s.tl type of call, do default Omniture link tracking now.
			$(elmt).track({
				'module' : 'Omniture',
				'event' : 'instant',
				'args' : {
					'linkType' : custom[0],
					'linkName' : custom[1],
					'svalues' : {}
				},
				'defer' : '0'
			});
		}
	},

	/**
	 * Called to handle linktrack calls from the setupLinkTracking method above.
	 * @member Syn.Omniture
	 * @access public
	 * @param (object) elmt
	 * @param (object) props
	 * @param (object) custom
	 */
	linkTrackHandler: function(elmt, props, custom)
	{
		if (typeof this.config.link_tracking === 'object'
			&& typeof this.config.link_tracking.linktrack !== 'undefined')
		{
			//This is a track link call.
			var config = this.config.link_tracking.linktrack;
			//Overwrite props with any custom values passed in.
			custom = (typeof custom === 'object' && typeof custom[0] === 'object') ? custom[0] : {};
			for (var k in custom)
			{
				if (typeof custom[k] !== 'undefined')
				{
					props[k] = custom[k];
				}
			}
			//Set "undefined" for any props that are blank strings.
			for (k in props)
			{
				if (typeof props[k] !== 'undefined')
				{
					props[k] = (typeof props[k] === 'string' && props[k] === '') ? 'undefined' : props[k];
				}
			}
			props.pageName = (typeof this.config.s.pageName === 'string' && this.config.s.pageName !== '') ? this.config.s.pageName : 'undefined';
			props.pageNameAndLid = (typeof props.lid === 'string' && props.lid !== 'undefined') ? props.pageName + ' : ' + props.lid : (typeof props.text === 'string') ? props.pageName + ' : ' + props.text : props.pageName + ' : undefined';
			//Figure out if this is an internal link or an external link.
			var internalLink = true;
			if (typeof props.href === 'string' && props.href.indexOf('://') > -1)
			{
				internalLink = false;
				if (typeof this.config.s.linkInternalFilters === 'string')
				{
					var internalFilters = this.config.s.linkInternalFilters.split(',');
					for (var i in internalFilters)
					{
						if (props.href.indexOf(internalFilters[i]) > -1)
						{
							internalLink = true;
							break;
						}
					}
				}
			}
			//If not tracking external links, and this is one, just exit.
			var trackExternalLinks = (typeof config.track_external_links === 'boolean') ? config.track_external_links : true;
			if (trackExternalLinks === false && internalLink === false)
			{
				return;
			}
			//Build an object of data to send to Omniture using the config.
			var svalues = {};
			if (typeof config.svalues_to_variables === 'object')
			{
				for (var j in config.svalues_to_variables)
				{
					if (typeof config.svalues_to_variables[j] === 'string' && typeof props[config.svalues_to_variables[j]] === 'string')
					{
						svalues[j] = props[config.svalues_to_variables[j]];
					}
				}
			}
			//Do tracking now.
			if (internalLink === true)
			{
				//Track an internal link by defering the request until the next page load
				//with a cookie. The syntrack framework takes care of this for us - it automatically
				//changes the event to 'ready', so Omniture works correctly.
				$(document).track({
					'module' : 'Omniture',
					'event' : 'instant',
					'args' : {
						'svalues' : svalues,
						'overwrite' : true
					},
					'defer' : 'load'
				});
			}
			else
			{
				//Track an external link right now by calling the Omniture
				//record method directly.
				Syn.Tracking.Omniture.record({
					'module' : 'Omniture',
					'event' : 'instant',
					'args' : {
						'linkType' : 'e',
						'linkName' : props.text,
						'svalues' : svalues
					},
					'defer' : '0'
				});
			}
		}
	},

	/**
	 * Save Object To Omniture Config.
	 * Takes an object and loops through it and sets each value in the config.
	 * Name is the name of the object to save as.
	 * If reverse is true, the values will be the keys, and the keys will be
	 * the values.
	 * @member Syn.Omniture
	 * @access public
	 * @param (object) The object to save in the config.
	 * @param (string) The name of the object to save the values under.
	 * @param (bool) Reverse the keys and values when saving.
	 * @return NULL
	 */
	saveObjectToConfig: function(object, name, reverse)
	{
		reverse = (typeof reverse === 'boolean') ? reverse : false;
		if (typeof object !== 'object' || typeof name !== 'string' || name.length < 1)
		{
			return;
		}
		if (typeof Syn.Config.Omniture === 'undefined')
		{
			Syn.Config.Omniture = {};
		}
		if (typeof Syn.Config.Omniture[name] == 'undefined')
		{
			Syn.Config.Omniture[name] = {};
		}
		for (var i in object)
		{
			if (typeof object[i] === 'string')
			{
				if (reverse === false)
				{
					Syn.Config.Omniture[name][i] = object[i];
				}
				else
				{
					//This reverses the array (value => key) while
					//adding it to the config.
					Syn.Config.Omniture[name][object[i]] = i;
				}
			}
		}
	},

	/**
	 * Initialize Omniture
	 * This starts initializing Omniture.
	 * @member Syn.Omniture
	 * @access public
	 * @return NULL
	 */
	initOmniture: function()
	{
		var self = this;

		if (Syn.Config.Omniture.lockCount > 0)
		{
			/**
			 * If we are supposed to pause, start an interval
			 * to keep checking the pause variable.
			 */
			self.intervalId = setInterval(function()
			{
				self.pauseHandler(self.config);
			}, 100);
		}
		else
		{
			/**
			 * Initialize omniture right now.
			 */
			self.pauseHandler(self.config);
		}
	},

	/**
	 * Make the default Omniture page request.
	 * This makes the default Omniture page request.
	 * @member Syn.Omniture
	 * @access public
	 * @return NULL
	 */
	pauseHandler : function(config)
	{
		if (Syn.Config.Omniture.lockCount > 0 && this.intervalCount < 15) //15 * 100ms = 1.5 seconds
		{
			this.intervalCount++;
			return;
		}
		else
		{
			clearInterval(this.intervalId);
		}

		var self = this;

		/**
		 * Use setTimeout before initializing
		 * Omniture so that any other $track events
		 * that have been defined get called first.
		 * This is so that we only make a single call
		 * to Omniture on document.ready.
		 */
		setTimeout(function(){
			/**
			 * Set global Omniture variables.
			 */
			s_account = self.config.account;
			s=s_gi(s_account);

			/**
			 * Initialize the Omniture Plugins.
			 * This function is defined in plugins.js.
			 */
			Syn.Omniture.initPlugins();

			/**
			 * Loop through the trigger_events and see if any of them
			 * are set in the s object - if so, add the respective event to
			 * the s.events list.
			 */
			if (typeof Syn.Config.Omniture.trigger_events === 'object' && typeof Syn.Config.Omniture.s === 'object')
			{
				for (var l in Syn.Config.Omniture.s)
				{
					if (typeof Syn.Config.Omniture.s[l] === 'string' && typeof Syn.Config.Omniture.trigger_events[l] === 'string')
					{
						Syn.Tracking.Omniture.setSValues({'events' : Syn.Config.Omniture.trigger_events[l]}, ',');
					}
				}
			}

			/**
			 * Do initial page tracking now.
			 * I am calling the record function directly, because
			 * at this point, I can not call document.ready.
			 * It has already happened, so if I bound a handler
			 * to it, it would never fire. I can not use
			 * the 'instant' event. I must use 'ready' for this to
			 * work.
			 */
			Syn.Tracking.Omniture.record({
				'module' : 'Omniture',
				'event' : 'ready',
				'args' : {},
				'defer' : '0'
			});
		}, 0);
	}
});

})(Syn.$);
;
/***** en_US/components/omniture/javascripts/plugins.js *****/
( function($)
{

/**
 * plugins.js
 * This is used by omniture.js.
 * This should be included after that file so that Syn.Omniture is defined.
 *
 * NOTE:
 * The following functions are from Omniture.
 * They are defined here on purpose.
 */

/**
 * Initialize Omniture Plugins.
 * @member Syn.Omniture
 */
Syn.Omniture.initPlugins = function()
{
	/**
	 * Start of Plugin: getQueryParam 2.3
	 */
	s.getQueryParam=new Function("p","d","u",""
	+"var s=this,v='',i,t;d=d?d:'';u=u?u:(s.pageURL?s.pageURL:s.wd.locati"
	+"on);if(u=='f')u=s.gtfs().location;while(p){i=p.indexOf(',');i=i<0?p"
	+".length:i;t=s.p_gpv(p.substring(0,i),u+'');if(t){t=t.indexOf('#')>-"
	+"1?t.substring(0,t.indexOf('#')):t;}if(t)v+=v?d+t:t;p=p.substring(i="
	+"=p.length?i:i+1)}return v");

	s.p_gpv=new Function("k","u",""
	+"var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
	+"=s.pt(q,'&','p_gvf',k)}return v");

	s.p_gvf=new Function("t","k",""
	+"if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
	+"rue':t.substring(i+1);if(p.toLowerCase()==k.toLowerCase())return s."
	+"epa(v)}return ''");
	/**
	 * End of plugin.
	 */

	/**
	 * Start of Plugin: Days since last Visit 1.1.H - capture time from last visit
	 */
	s.getDaysSinceLastVisit=new Function("c",""
	+"if(!c){c='dslv';};"
	+"var s=this,e=new Date(),es=new Date(),cval,cval_s,cval_ss,ct=e.getT"
	+"ime(),day=24*60*60*1000,f1,f2,f3,f4,f5;e.setTime(ct+3*365*day);es.s"
	+"etTime(ct+30*60*1000);f0='Cookies Not Supported';f1='First Visit';f"
	+"2='More than 30 days';f3='More than 7 days';f4='Less than 7 days';f"
	+"5='Less than 1 day';cval=s.c_r(c);if(cval.length==0){s.c_w(c,ct,e);"
	+"s.c_w(c+'_s',f1,es);}else{var d=ct-cval;if(d>30*60*1000){if(d>30*da"
	+"y){s.c_w(c,ct,e);s.c_w(c+'_s',f2,es);}else if(d<30*day+1 && d>7*day"
	+"){s.c_w(c,ct,e);s.c_w(c+'_s',f3,es);}else if(d<7*day+1 && d>day){s."
	+"c_w(c,ct,e);s.c_w(c+'_s',f4,es);}else if(d<day+1){s.c_w(c,ct,e);s.c"
	+"_w(c+'_s',f5,es);}}else{s.c_w(c,ct,e);cval_ss=s.c_r(c+'_s');s.c_w(c"
	+"+'_s',cval_ss,es);}}cval_s=s.c_r(c+'_s');if(cval_s.length==0) retur"
	+"n f0;else if(cval_s!=f1&&cval_s!=f2&&cval_s!=f3&&cval_s!=f4&&cval_s"
	+"!=f5) return '';else return cval_s;");
	/**
	 * End of plugin.
	 */

	/**
	 * Start of Plugin: getNewRepeat 1.0 - Return whether user is new or repeat
	 */
	s.getNewRepeat=new Function(""
	+"var s=this,e=new Date(),cval,ct=e.getTime(),y=e.getYear();e.setTime"
	+"(ct+30*24*60*60*1000);cval=s.c_r('s_nr');if(cval.length==0){s.c_w("
	+"'s_nr',ct,e);return 'New';}if(cval.length!=0&&ct-cval<30*60*1000){s"
	+".c_w('s_nr',ct,e);return 'New';}if(cval<1123916400001){e.setTime(cv"
	+"al+30*24*60*60*1000);s.c_w('s_nr',ct,e);return 'Repeat';}else retur"
	+"n 'Repeat';");
	/**
	 * End of plugin.
	 */

	/**
	 * Start of Plugin: Visit Number By Month 2.0 - Return the user visit number
	 */
	s.getVisitNum=new Function(""
	+"var s=this,e=new Date(),cval,cvisit,ct=e.getTime(),c='s_vnum',c2='s"
	+"_invisit';e.setTime(ct+30*24*60*60*1000);cval=s.c_r(c);if(cval){var"
	+" i=cval.indexOf('&vn='),str=cval.substring(i+4,cval.length),k;}cvis"
	+"it=s.c_r(c2);if(cvisit){if(str){e.setTime(ct+30*60*1000);s.c_w(c2,'"
	+"true',e);return str;}else return 'unknown visit number';}else{if(st"
	+"r){str++;k=cval.substring(0,i);e.setTime(k);s.c_w(c,k+'&vn='+str,e)"
	+";e.setTime(ct+30*60*1000);s.c_w(c2,'true',e);return str;}else{s.c_w"
	+"(c,ct+30*24*60*60*1000+'&vn=1',e);e.setTime(ct+30*60*1000);s.c_w(c2"
	+",'true',e);return 1;}}"
	);
	/**
	 * End of plugin.
	 */

	/**
	 * Start of Custom Plugin: Page Tag - Return the page_tag meta tag.
	 */
	s.getPageTag=function()
	{
		var tagname = '';
		if (typeof jQuery !== 'undefined')
		{
			tagname = jQuery("head meta[name='page_tag']").attr('content');
		}
		return tagname;
	};
	/**
	 * End of plugin.
	 */

	/**
	 * Custom Plugin: getHourTimeParting - Wraps getTimeParting to return the time to closest half hour.
	 */
	s.getHourTimeParting = function()
	{
		var current_date = new Date();
		var year = current_date.getFullYear();
		var time_zone_offset = current_date.getTimezoneOffset() / -60; // Difference in minutes between time zone and GMT / -60 minutes in an hour.

		return s.getTimeParting('h', time_zone_offset, year).toLowerCase();
	};
	/**
	 * End of custom plugin.
	 */

	/**
	 * Custom Plugin: getDayTimeParting - Wraps getTimeParting to return the day of week.
	 */
	s.getDayTimeParting = function()
	{
		var current_date = new Date();
		var year = current_date.getFullYear();
		var time_zone_offset = current_date.getTimezoneOffset() / -60; // Difference in minutes between time zone and GMT / -60 minutes in an hour.

		return s.getTimeParting('d', time_zone_offset, year).toLowerCase();
	};
	/**
	 * End of custom plugin.
	 */

	/**
	 * Plugin: getTimeParting 1.3 - Set timeparting values based on time zone
	 */
	s.getTimeParting=new Function("t","z","y",""
	+"dc=new Date('1/1/2000');f=15;ne=8;if(dc.getDay()!=6||"
	+"dc.getMonth()!=0){return'Data Not Available'}else{;z=parseInt(z);"
	+"if(y=='2009'){f=8;ne=1};gmar=new Date('3/1/'+y);dsts=f-gmar.getDay("
	+");gnov=new Date('11/1/'+y);dste=ne-gnov.getDay();spr=new Date('3/'"
	+"+dsts+'/'+y);fl=new Date('11/'+dste+'/'+y);cd=new Date();"
	+"if(cd>spr&&cd<fl){z=z+1}else{z=z};utc=cd.getTime()+(cd.getTimezoneO"
	+"ffset()*60000);tz=new Date(utc + (3600000*z));thisy=tz.getFullYear("
	+");var days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Fr"
	+"iday','Saturday'];if(thisy!=y){return'Data Not Available'}else{;thi"
	+"sh=tz.getHours();thismin=tz.getMinutes();thisd=tz.getDay();var dow="
	+"days[thisd];var ap='AM';var dt='Weekday';var mint='00';if(thismin>3"
	+"0){mint='30'}if(thish>=12){ap='PM';thish=thish-12};if (thish==0){th"
	+"ish=12};if(thisd==6||thisd==0){dt='Weekend'};var timestring=thish+'"
	+":'+mint+ap;var daystring=dow;var endstring=dt;if(t=='h'){return tim"
	+"estring}if(t=='d'){return daystring};if(t=='w'){return en"
	+"dstring}}};"
	);
	/**
	 * End of plugin.
	 */

	/*
	* Plugin: getPreviousValue v1.0 - return previous value of designated
	*   variable (requires split utility)
	*/
	s.getPreviousValue=new Function("v","c","el",""
	+"var s=this,t=new Date,i,j,r='';t.setTime(t.getTime()+1800000);if(el"
	+"){if(s.events){i=s.split(el,',');j=s.split(s.events,',');for(x in i"
	+"){for(y in j){if(i[x]==j[y]){if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t)"
	+":s.c_w(c,'no value',t);return r}}}}}else{if(s.c_r(c)) r=s.c_r(c);v?"
	+"s.c_w(c,v,t):s.c_w(c,'no value',t);return r}"
	);
	/**
	 * End of plugin.
	 */

	/*
	* Utility Function: split v1.5 - split a string (JS 1.0 compatible)
	*/
	s.split=new Function("l","d",""
	+"var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x"
	+"++]=l.substring(0,i);l=l.substring(i+d.length);}return a"
	);
	/**
	 * End of plugin.
	 */

	/*
	 * Plugin: getPercentPageViewed v1.2 - capture previous page's page view percentage
	 */
	s.getPercentPageViewed=new Function("",""
	+"var s=this;if(typeof(s.linkType)=='undefined'||s.linkType=='e'){var"
	+" v=s.c_r('s_ppv');s.c_w('s_ppv',0);return v;}");
	s.getPPVCalc=new Function("",""
	+"var s=s_c_il["+s._in+"],dh=Math.max(Math.max(s.d.body.scrollHeight,"
	+"s.d.documentElement.scrollHeight),Math.max(s.d.body.offsetHeight,s."
	+"d.documentElement.offsetHeight),Math.max(s.d.body.clientHeight,s.d."
	+"documentElement.clientHeight)),vph=s.wd.innerHeight||(s.d.documentE"
	+"lement.clientHeight||s.d.body.clientHeight),st=s.wd.pageYOffset||(s"
	+".wd.document.documentElement.scrollTop||s.wd.document.body.scrollTo"
	+"p),vh=st+vph,pv=Math.round(vh/dh*100),cp=s.c_r('s_ppv');if(pv>100){"
	+"s.c_w('s_ppv','');}else if(pv>cp){s.c_w('s_ppv',pv);}");
	s.getPPVSetup=new Function("",""
	+"var s=this;if(s.wd.addEventListener){s.wd.addEventListener('load',s"
	+".getPPVCalc,false);s.wd.addEventListener('scroll',s.getPPVCalc,fals"
	+"e);s.wd.addEventListener('resize',s.getPPVCalc,false);}else if(s.wd"
	+".attachEvent){s.wd.attachEvent('onload',s.getPPVCalc);s.wd.attachEv"
	+"ent('onscroll',s.getPPVCalc);s.wd.attachEvent('onresize',s.getPPVCa"
	+"lc);}");
	s.getPPVSetup();
	/*
	 * End of plugin.
	 */

	/**
	 * Set Omniture's doPlugins function as our
	 * internal doPlugins function.
	 */
	s.doPlugins = Syn.Omniture.doPlugins;
};

/**
 * Call Omniture Plugins
 * This is called by the Omniture s.t() and s.tl() functions automatically
 * to get the values of the plugins specified in the customProps array.
 * @member Syn.Omniture
 * @access public
 * @param s
 * @return NULL
 */
Syn.Omniture.doPlugins = function(s)
{
	var cp = Syn.Config.Omniture.cp;
	var tmpfunc, l;
	for (var k in cp)
	{
		if (typeof cp[k] === 'string')
		{
			if (typeof s[cp[k]] === 'function')
			{
				s[k] = s[cp[k]]();
			}
		}
		else if (typeof cp[k] === 'object' && typeof cp[k][0] === 'string' && cp[k].length > 1)
		{
			tmpfunc = cp[k][0];
			cp[k].shift();
			for (l in cp[k])
			{
				if (cp[k][l].substr(0, 11) === 'javascript:')
				{
					cp[k][l] = eval(cp[k][l].substr(11));
				}
			}
			if (typeof s[tmpfunc] === 'function')
			{
				s[k] = s[tmpfunc].apply(this, cp[k]);
			}
		}
	}
};
})(Syn.$);
;
/***** en_US/components/omniture/javascripts/sitecatalyst.js *****/
/* SiteCatalyst code version: H.22.1. */
var s_code='',s_objectID;function s_gi(un,pg,ss){var c="s._c='s_c';s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s.wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.wd.s_c_in++;s"
+".an=s_an;s.cls=function(x,c){var i,y='';if(!c)c=this.an;for(i=0;i<x.length;i++){n=x.substring(i,i+1);if(c.indexOf(n)>=0)y+=n}return y};s.fl=function(x,l){return x?(''+x).substring(0,l):x};s.co=func"
+"tion(o){if(!o)return o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.indexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for(var p=0;p<x.length;p++)if(('0123456789').indexO"
+"f(x.substring(p,p+1))<0)return 0;return 1};s.rep=s_rep;s.sp=s_sp;s.jn=s_jn;s.ape=function(x){var s=this,h='0123456789ABCDEF',i,c=s.charSet,n,l,e,y='';c=c?c.toUpperCase():'';if(x){x=''+x;if(s.em==3)"
+"return encodeURIComponent(x);else if(c=='AUTO'&&('').charCodeAt){for(i=0;i<x.length;i++){c=x.substring(i,i+1);n=x.charCodeAt(i);if(n>127){l=0;e='';while(n||l<4){e=h.substring(n%16,n%16+1)+e;n=(n-n%"
+"16)/16;l++}y+='%u'+e}else if(c=='+')y+='%2B';else y+=escape(c)}return y}else{x=s.rep(escape(''+x),'+','%2B');if(c&&s.em==1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>=0){i++;if"
+"(h.substring(8).indexOf(x.substring(i,i+1).toUpperCase())>=0)return x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}}}return x};s.epa=function(x){var s=this;if(x){x=''+x;return s.em==3?de"
+"codeURIComponent(x):unescape(s.rep(x,'+',' '))}return x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.indexOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s[f](t,a);if(r)return r;z+=y+d.l"
+"ength;t=x.substring(z,x.length);t=z<x.length?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0)a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);return (t!=''&&t==a)};s.f"
+"sf=function(t,a){var s=this;if(s.pt(a,',','isf',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.si=function(){var s=this,i,k,v,c="
+"s_gi+'var s=s_gi(\"'+s.oun+'\");s.sa(\"'+s.un+'\");';for(i=0;i<s.va_g.length;i++){k=s.va_g[i];v=s[k];if(v!=undefined){if(typeof(v)=='string')c+='s.'+k+'=\"'+s_fe(v)+'\";';else c+='s.'+k+'='+v+';'}}"
+"c+=\"s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID=s.ppu=s.pe=s.pev1=s.pev2=s.pev3='';\";return c};s.c_d='';s.c_gdf=function(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=function(){var"
+" s=this,d=s.wd.location.hostname,n=s.fpCookieDomainPeriods,p;if(!n)n=s.cookieDomainPeriods;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');if(p>=0){while(p>=0&&n>1){p=d.lastIndexOf('"
+".',p-1);n--}s.c_d=p>0&&s.pt(d,'.','c_gdf',0)?d.substring(p):d}}return s.c_d};s.c_r=function(k){var s=this;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:c.indexOf(';',i),v=i<0?'':s."
+"epa(c.substring(i+2+k.length,e<0?c.length:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s.c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if(e&&l!='SESSION'&&l!='NON"
+"E'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=new Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cookie=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expires='+e.toGMTString()"
+"+';':'')+(d?' domain='+d+';':'');return s.c_r(k)==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in,n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n<0;i++){if(l[i]."
+"o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x.o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r,tcf;if(s.apv"
+">=5&&(!s.isopera||s.apv>=7)){tcf=new Function('s','f','a','t','var e,r;try{r=s[f](a)}catch(e){r=s[t](e)}return r');r=tcf(s,f,a,t)}else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s[b](a);else{s.eh(s.wd,"
+"'onerror',0,o);r=s[f](a);s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'],c;s.eh(window,\"onerror\",1);s.etfs=1;c=s"
+".t();if(c)s.d.write(c);s.etfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=function(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.location!=l&&p.location.host==l.host){s.tfs="
+"p;return s.gtfsf(s.tfs)}return s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.etfs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.tfs};s.mrq=function(u){var s=this,"
+"l=s.rl[u],n,r;s.rl[u]=0;if(l)for(n=0;n<l.length;n++){r=l[n];s.mr(0,0,r.r,0,r.t,r.u)}};s.br=function(id,rs){var s=this;if(s.disableBufferedRequests||!s.c_w('s_br',rs))s.brl=rs};s.flushBufferedReques"
+"ts=function(){this.fbr(0)};s.fbr=function(id){var s=this,br=s.c_r('s_br');if(!br)br=s.brl;if(br){if(!s.disableBufferedRequests)s.c_w('s_br','');s.mr(0,0,br)}s.brl=0};s.mr=function(sess,q,rs,id,ta,u"
+"){var s=this,dc=s.dc,t1=s.trackingServer,t2=s.trackingServerSecure,tb=s.trackingServerBase,p='.sc',ns=s.visitorNamespace,un=s.cls(u?u:(ns?ns:s.fun)),r=new Object,l,imn='s_i_'+(un),im,b,e;if(!rs){if"
+"(t1){if(t2&&s.ssl)t1=t2}else{if(!tb)tb='2o7.net';if(dc)dc=(''+dc).toLowerCase();else dc='d1';if(tb=='2o7.net'){if(dc=='d1')dc='112';else if(dc=='d2')dc='122';p=''}t1=un+'.'+dc+'.'+p+tb}rs='http'+(s"
+".ssl?'s':'')+'://'+t1+'/b/ss/'+s.un+'/'+(s.mobile?'5.1':'1')+'/H.22.1/'+sess+'?AQB=1&ndh=1'+(q?q:'')+'&AQE=1';if(s.isie&&!s.ismac)rs=s.fl(rs,2047);if(id){s.br(id,rs);return}}if(s.d.images&&s.apv>=3"
+"&&(!s.isopera||s.apv>=7)&&(s.ns6<0||s.apv>=6.1)){if(!s.rc)s.rc=new Object;if(!s.rc[un]){s.rc[un]=1;if(!s.rl)s.rl=new Object;s.rl[un]=new Array;setTimeout('if(window.s_c_il)window.s_c_il['+s._in+']."
+"mrq(\"'+un+'\")',750)}else{l=s.rl[un];if(l){r.t=ta;r.u=un;r.r=rs;l[l.length]=r;return ''}imn+='_'+s.rc[un];s.rc[un]++}im=s.wd[imn];if(!im)im=s.wd[imn]=new Image;im.s_l=0;im.onload=new Function('e',"
+"'this.s_l=1;var wd=window,s;if(wd.s_c_il){s=wd.s_c_il['+s._in+'];s.mrq(\"'+un+'\");s.nrs--;if(!s.nrs)s.m_m(\"rr\")}');if(!s.nrs){s.nrs=1;s.m_m('rs')}else s.nrs++;im.src=rs;if((!ta||ta=='_self'||ta="
+"='_top'||(s.wd.name&&ta==s.wd.name))&&rs.indexOf('&pe=')>=0){b=e=new Date;while(!im.s_l&&e.getTime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c=\"'+rs+'\" width=1 height=1 border=0"
+" alt=\"\">'};s.gg=function(v){var s=this;if(!s.wd['s_'+v])s.wd['s_'+v]='';return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0,2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl="
+"function(v){var s=this;if(s.pg)s.pt(v,',','glf',0)};s.rf=function(x){var s=this,y,i,j,h,l,a,b='',c='',t;if(x){y=''+x;i=y.indexOf('?');if(i>0){a=y.substring(i+1);y=y.substring(0,i);h=y.toLowerCase()"
+";i=0;if(h.substring(0,7)=='http://')i+=7;else if(h.substring(0,8)=='https://')i+=8;h=h.substring(i);i=h.indexOf(\"/\");if(i>0){h=h.substring(0,i);if(h.indexOf('google')>=0){a=s.sp(a,'&');if(a.lengt"
+"h>1){l=',q,ie,start,search_key,word,kw,cd,';for(j=0;j<a.length;j++){t=a[j];i=t.indexOf('=');if(i>0&&l.indexOf(','+t.substring(0,i)+',')>=0)b+=(b?'&':'')+t;else c+=(c?'&':'')+t}if(b&&c){y+='?'+b+'&'"
+"+c;if(''+x!=y)x=y}}}}}}return x};s.hav=function(){var s=this,qs='',fv=s.linkTrackVars,fe=s.linkTrackEvents,mn,i;if(s.pe){mn=s.pe.substring(0,1).toUpperCase()+s.pe.substring(1);if(s[mn]){fv=s[mn].tr"
+"ackVars;fe=s[mn].trackEvents}}fv=fv?fv+','+s.vl_l+','+s.vl_l2:'';for(i=0;i<s.va_t.length;i++){var k=s.va_t[i],v=s[k],b=k.substring(0,4),x=k.substring(4),n=parseInt(x),q=k;if(v&&k!='linkName'&&k!='l"
+"inkType'){if(s.pe||s.lnk||s.eo){if(fv&&(','+fv+',').indexOf(','+k+',')<0)v='';if(k=='events'&&fe)v=s.fs(v,fe)}if(v){if(k=='dynamicVariablePrefix')q='D';else if(k=='visitorID')q='vid';else if(k=='pa"
+"geURL'){q='g';v=s.fl(v,255)}else if(k=='referrer'){q='r';v=s.fl(s.rf(v),255)}else if(k=='vmk'||k=='visitorMigrationKey')q='vmt';else if(k=='visitorMigrationServer'){q='vmf';if(s.ssl&&s.visitorMigra"
+"tionServerSecure)v=''}else if(k=='visitorMigrationServerSecure'){q='vmf';if(!s.ssl&&s.visitorMigrationServer)v=''}else if(k=='charSet'){q='ce';if(v.toUpperCase()=='AUTO')v='ISO8859-1';else if(s.em="
+"=2||s.em==3)v='UTF-8'}else if(k=='visitorNamespace')q='ns';else if(k=='cookieDomainPeriods')q='cdp';else if(k=='cookieLifetime')q='cl';else if(k=='variableProvider')q='vvp';else if(k=='currencyCode"
+"')q='cc';else if(k=='channel')q='ch';else if(k=='transactionID')q='xact';else if(k=='campaign')q='v0';else if(k=='resolution')q='s';else if(k=='colorDepth')q='c';else if(k=='javascriptVersion')q='j"
+"';else if(k=='javaEnabled')q='v';else if(k=='cookiesEnabled')q='k';else if(k=='browserWidth')q='bw';else if(k=='browserHeight')q='bh';else if(k=='connectionType')q='ct';else if(k=='homepage')q='hp'"
+";else if(k=='plugins')q='p';else if(s.num(x)){if(b=='prop')q='c'+n;else if(b=='eVar')q='v'+n;else if(b=='list')q='l'+n;else if(b=='hier'){q='h'+n;v=s.fl(v,255)}}if(v)qs+='&'+q+'='+(k.substring(0,3)"
+"!='pev'?s.ape(v):v)}}}return qs};s.ltdf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var qi=h.indexOf('?');h=qi>=0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.length+1))=='.'+t"
+")return 1;return 0};s.ltef=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';if(t&&h.indexOf(t)>=0)return 1;return 0};s.lt=function(h){var s=this,lft=s.linkDownloadFileTypes,lef=s.linkExt"
+"ernalFilters,lif=s.linkInternalFilters;lif=lif?lif:s.wd.location.hostname;h=h.toLowerCase();if(s.trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&h.substring(0,1)"
+"!='#'&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))return 'e';return ''};s.lc=new Function('e','var s=s_c_il['+s._in+'],b=s.eh(this,\"onclick\");s.lnk=s.co(this);s.t"
+"();s.lnk=0;if(b)return this[b](e);return true');s.bc=new Function('e','var s=s_c_il['+s._in+'],f,tcf;if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=e.srcElement?e.srcElement:e.target;tcf=new Functi"
+"on(\"s\",\"var e;try{if(s.eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t()}catch(e){}\");tcf(s);s.eo=0');s.oh=function(o){var s=this,l=s.wd.location,h=o.href?o.href:'',i,j,k,p;i=h.inde"
+"xOf(':');j=h.indexOf('?');k=h.indexOf('/');if(h&&(i<0||(j>=0&&i>j)||(k>=0&&i>k))){p=o.protocol&&o.protocol.length>1?o.protocol:(l.protocol?l.protocol:'');i=l.pathname.lastIndexOf('/');h=(p?p+'//':'"
+"')+(o.host?o.host:(l.host?l.host:''))+(h.substring(0,1)!='/'?l.pathname.substring(0,i<0?0:i)+'/':'')+h}return h};s.ot=function(o){var t=o.tagName;t=t&&t.toUpperCase?t.toUpperCase():'';if(t=='SHAPE'"
+")t='';if(t){if((t=='INPUT'||t=='BUTTON')&&o.type&&o.type.toUpperCase)t=o.type.toUpperCase();else if(!t&&o.href)t='A';}return t};s.oid=function(o){var s=this,t=s.ot(o),p,c,n='',x=0;if(t&&!o.s_oid){p"
+"=o.protocol;c=o.onclick;if(o.href&&(t=='A'||t=='AREA')&&(!c||!p||p.toLowerCase().indexOf('javascript')<0))n=s.oh(o);else if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''),' '"
+",'');x=2}else if(t=='INPUT'||t=='SUBMIT'){if(o.value)n=o.value;else if(o.innerText)n=o.innerText;else if(o.textContent)n=o.textContent;x=3}else if(o.src&&t=='IMAGE')n=o.src;if(n){o.s_oid=s.fl(n,100"
+");o.s_oidt=x}}return o.s_oid};s.rqf=function(t,un){var s=this,e=t.indexOf('='),u=e>=0?t.substring(0,e):'',q=e>=0?s.epa(t.substring(e+1)):'';if(u&&q&&(','+u+',').indexOf(','+un+',')>=0){if(u!=s.un&&"
+"s.un.indexOf(',')>=0)q='&u='+u+q+'&u=0';return q}return ''};s.rq=function(un){if(!un)un=this.un;var s=this,c=un.indexOf(','),v=s.c_r('s_sq'),q='';if(c<0)return s.pt(v,'&','rqf',un);return s.pt(un,'"
+",','rq',0)};s.sqp=function(t,a){var s=this,e=t.indexOf('='),q=e<0?'':s.epa(t.substring(e+1));s.sqq[q]='';if(e>=0)s.pt(t.substring(0,e),',','sqs',q);return 0};s.sqs=function(un,q){var s=this;s.squ[u"
+"n]=q;return 0};s.sq=function(q){var s=this,k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Object;s.squ=new Object;s.sqq[q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v='';for(x in s.squ)if(x&&(!Object||!Ob"
+"ject.prototype||!Object.prototype[x]))s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':'')+x;for(x in s.sqq)if(x&&(!Object||!Object.prototype||!Object.prototype[x])&&s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq"
+"[x]+'='+s.ape(x);c++}return s.c_w(k,v,0)};s.wdl=new Function('e','var s=s_c_il['+s._in+'],r=true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r=this[b](e);for(i=0;i<s.d.links.length;i++){o=s.d.links[i];oc=o"
+".onclick?\"\"+o.onclick:\"\";if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=function(){var s=this;if(s.apv>3&&(!s.isie|"
+"|!s.ismac||s.apv>=5)){if(s.b&&s.b.attachEvent)s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd,'onload',0,s.wdl)}};s.vs=func"
+"tion(x){var s=this,v=s.visitorSampling,g=s.visitorSamplingGroup,k='s_vsn_'+s.un+(g?'_'+g:''),n=s.c_r(k),e=new Date,y=e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=100;if(!n){if(!s.c_w(k,x,e)"
+")return 0;n=x}if(n%10000>v)return 0}return 1};s.dyasmf=function(t,m){if(t&&m&&m.indexOf(t)>=0)return 1;return 0};s.dyasf=function(t,m){var s=this,i=t?t.indexOf('='):-1,n,x;if(i>=0&&m){var n=t.subst"
+"ring(0,i),x=t.substring(i+1);if(s.pt(x,',','dyasmf',m))return n}return 0};s.uns=function(){var s=this,x=s.dynamicAccountSelection,l=s.dynamicAccountList,m=s.dynamicAccountMatch,n,i;s.un=s.un.toLowe"
+"rCase();if(x&&l){if(!m)m=s.wd.location.host;if(!m.toLowerCase)m=''+m;l=l.toLowerCase();m=m.toLowerCase();n=s.pt(l,';','dyasf',m);if(n)s.un=n}i=s.un.indexOf(',');s.fun=i<0?s.un:s.un.substring(0,i)};"
+"s.sa=function(un){var s=this;s.un=un;if(!s.oun)s.oun=un;else if((','+s.oun+',').indexOf(','+un+',')<0)s.oun+=','+un;s.uns()};s.m_i=function(n,a){var s=this,m,f=n.substring(0,1),r,l,i;if(!s.m_l)s.m_"
+"l=new Object;if(!s.m_nl)s.m_nl=new Array;m=s.m_l[n];if(!a&&m&&m._e&&!m._i)s.m_a(n);if(!m){m=new Object,m._c='s_m';m._in=s.wd.s_c_in;m._il=s._il;m._il[m._in]=m;s.wd.s_c_in++;m.s=s;m._n=n;m._l=new Ar"
+"ray('_c','_in','_il','_i','_e','_d','_dl','s','n','_r','_g','_g1','_t','_t1','_x','_x1','_rs','_rr','_l');s.m_l[n]=m;s.m_nl[s.m_nl.length]=n}else if(m._r&&!m._m){r=m._r;r._m=m;l=m._l;for(i=0;i<l.le"
+"ngth;i++)if(m[l[i]])r[l[i]]=m[l[i]];r._il[r._in]=r;m=s.m_l[n]=r}if(f==f.toUpperCase())s[n]=m;return m};s.m_a=new Function('n','g','e','if(!g)g=\"m_\"+n;var s=s_c_il['+s._in+'],c=s[g+\"_c\"],m,x,f=0"
+";if(!c)c=s.wd[\"s_\"+g+\"_c\"];if(c&&s_d)s[g]=new Function(\"s\",s_ft(s_d(c)));x=s[g];if(!x)x=s.wd[\\'s_\\'+g];if(!x)x=s.wd[g];m=s.m_i(n,1);if(x&&(!m._i||g!=\"m_\"+n)){m._i=f=1;if((\"\"+x).indexOf("
+"\"function\")>=0)x(s);else s.m_m(\"x\",n,x,e)}m=s.m_i(n,1);if(m._dl)m._dl=m._d=0;s.dlt();return f');s.m_m=function(t,n,d,e){t='_'+t;var s=this,i,x,m,f='_'+t,r=0,u;if(s.m_l&&s.m_nl)for(i=0;i<s.m_nl."
+"length;i++){x=s.m_nl[i];if(!n||x==n){m=s.m_i(x);u=m[t];if(u){if((''+u).indexOf('function')>=0){if(d&&e)u=m[t](d,e);else if(d)u=m[t](d);else u=m[t]()}}if(u)r=1;u=m[t+1];if(u&&!m[f]){if((''+u).indexO"
+"f('function')>=0){if(d&&e)u=m[t+1](d,e);else if(d)u=m[t+1](d);else u=m[t+1]()}}m[f]=1;if(u)r=1}}return r};s.m_ll=function(){var s=this,g=s.m_dl,i,o;if(g)for(i=0;i<g.length;i++){o=g[i];if(o)s.loadMo"
+"dule(o.n,o.u,o.d,o.l,o.e,1);g[i]=0}};s.loadModule=function(n,u,d,l,e,ln){var s=this,m=0,i,g,o=0,f1,f2,c=s.h?s.h:s.b,b,tcf;if(n){i=n.indexOf(':');if(i>=0){g=n.substring(i+1);n=n.substring(0,i)}else "
+"g=\"m_\"+n;m=s.m_i(n)}if((l||(n&&!s.m_a(n,g)))&&u&&s.d&&c&&s.d.createElement){if(d){m._d=1;m._dl=1}if(ln){if(s.ssl)u=s.rep(u,'http:','https:');i='s_s:'+s._in+':'+n+':'+g;b='var s=s_c_il['+s._in+'],"
+"o=s.d.getElementById(\"'+i+'\");if(s&&o){if(!o.l&&s.wd.'+g+'){o.l=1;if(o.i)clearTimeout(o.i);o.i=0;s.m_a(\"'+n+'\",\"'+g+'\"'+(e?',\"'+e+'\"':'')+')}';f2=b+'o.c++;if(!s.maxDelay)s.maxDelay=250;if(!"
+"o.l&&o.c<(s.maxDelay*2)/100)o.i=setTimeout(o.f2,100)}';f1=new Function('e',b+'}');tcf=new Function('s','c','i','u','f1','f2','var e,o=0;try{o=s.d.createElement(\"script\");if(o){o.type=\"text/javas"
+"cript\";'+(n?'o.id=i;o.defer=true;o.onload=o.onreadystatechange=f1;o.f2=f2;o.l=0;':'')+'o.src=u;c.appendChild(o);'+(n?'o.c=0;o.i=setTimeout(f2,100)':'')+'}}catch(e){o=0}return o');o=tcf(s,c,i,u,f1,"
+"f2)}else{o=new Object;o.n=n+':'+g;o.u=u;o.d=d;o.l=l;o.e=e;g=s.m_dl;if(!g)g=s.m_dl=new Array;i=0;while(i<g.length&&g[i])i++;g[i]=o}}else if(n){m=s.m_i(n);m._e=1}return m};s.vo1=function(t,a){if(a[t]"
+"||a['!'+t])this[t]=a[t]};s.vo2=function(t,a){if(!a[t]){a[t]=this[t];if(!a[t])a['!'+t]=1}};s.dlt=new Function('var s=s_c_il['+s._in+'],d=new Date,i,vo,f=0;if(s.dll)for(i=0;i<s.dll.length;i++){vo=s.d"
+"ll[i];if(vo){if(!s.m_m(\"d\")||d.getTime()-vo._t>=s.maxDelay){s.dll[i]=0;s.t(vo)}else f=1}}if(s.dli)clearTimeout(s.dli);s.dli=0;if(f){if(!s.dli)s.dli=setTimeout(s.dlt,s.maxDelay)}else s.dll=0');s.d"
+"l=function(vo){var s=this,d=new Date;if(!vo)vo=new Object;s.pt(s.vl_g,',','vo2',vo);vo._t=d.getTime();if(!s.dll)s.dll=new Array;s.dll[s.dll.length]=vo;if(!s.maxDelay)s.maxDelay=250;s.dlt()};s.t=fun"
+"ction(vo,id){var s=this,trk=1,tm=new Date,sed=Math&&Math.random?Math.floor(Math.random()*10000000000000):tm.getTime(),sess='s'+Math.floor(tm.getTime()/10800000)%10+sed,y=tm.getYear(),vt=tm.getDate("
+")+'/'+tm.getMonth()+'/'+(y<1900?y+1900:y)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tcf,tfs=s.gtfs(),ta=-1,q='',qs='',code='',vb=new Objec"
+"t;s.gl(s.vl_g);s.uns();s.m_ll();if(!s.td){var tl=tfs.location,a,o,i,x='',c='',v='',p='',bw='',bh='',j='1.0',k=s.c_w('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0,ps;if(String&&String.prototype){j='1.1'"
+";if(j.match){j='1.2';if(tm.setUTCDate){j='1.3';if(s.isie&&s.ismac&&s.apv>=5)j='1.4';if(pn.toPrecision){j='1.5';a=new Array;if(a.forEach){j='1.6';i=0;o=new Object;tcf=new Function('o','var e,i=0;try"
+"{i=new Iterator(o)}catch(e){}return i');i=tcf(o);if(i&&i.next)j='1.7'}}}}}if(s.apv>=4)x=screen.width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3){v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){c="
+"screen.pixelDepth;bw=s.wd.innerWidth;bh=s.wd.innerHeight}}s.pl=s.n.plugins}else if(s.isie){if(s.apv>=4){v=s.n.javaEnabled()?'Y':'N';c=screen.colorDepth;if(s.apv>=5){bw=s.d.documentElement.offsetWid"
+"th;bh=s.d.documentElement.offsetHeight;if(!s.ismac&&s.b){tcf=new Function('s','tl','var e,hp=0;try{s.b.addBehavior(\"#default#homePage\");hp=s.b.isHomePage(tl)?\"Y\":\"N\"}catch(e){}return hp');hp="
+"tcf(s,tl);tcf=new Function('s','var e,ct=0;try{s.b.addBehavior(\"#default#clientCaps\");ct=s.b.connectionType}catch(e){}return ct');ct=tcf(s)}}}else r=''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=s.f"
+"l(s.pl[pn].name,100)+';';if(p.indexOf(ps)<0)p+=ps;pn++}s.resolution=x;s.colorDepth=c;s.javascriptVersion=j;s.javaEnabled=v;s.cookiesEnabled=k;s.browserWidth=bw;s.browserHeight=bh;s.connectionType=c"
+"t;s.homepage=hp;s.plugins=p;s.td=1}if(vo){s.pt(s.vl_g,',','vo2',vb);s.pt(s.vl_g,',','vo1',vo)}if((vo&&vo._t)||!s.m_m('d')){if(s.usePlugins)s.doPlugins(s);var l=s.wd.location,r=tfs.document.referrer"
+";if(!s.pageURL)s.pageURL=l.href?l.href:l;if(!s.referrer&&!s._1_referrer){s.referrer=r;s._1_referrer=1}s.m_m('g');if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if(!o)return '';var p=s.pageName,w=1,t=s.ot(o)"
+",n=s.oid(o),x=o.s_oidt,h,l,i,oc;if(s.eo&&o==s.eo){while(o&&!n&&t!='BODY'){o=o.parentElement?o.parentElement:o.parentNode;if(!o)return '';t=s.ot(o);n=s.oid(o);x=o.s_oidt}oc=o.onclick?''+o.onclick:''"
+";if((oc.indexOf(\"s_gs(\")>=0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=0)return ''}if(n)ta=o.target;h=s.oh(o);i=h.indexOf('?');h=s.linkLeaveQueryString||i<0?h:h.substring(0,i);l=s.linkName"
+";t=s.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+='&pe=lnk_'+(t=='d'||t=='e'?s.ape(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev2='+s.ape(l):'');else trk=0;if(s.trackInlineStats){if(!p){p="
+"s.pageURL;w=0}t=s.ot(o);i=o.sourceIndex;if(s.gg('objectID')){n=s.gg('objectID');x=1;i=1}if(p&&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&pidt='+w:'')+'&oid='+s.ape(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot="
+"'+s.ape(t)+(i?'&oi='+i:'')}}if(!trk&&!qs)return '';s.sampled=s.vs(sed);if(trk){if(s.sampled)code=s.mr(sess,(vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq()),0,id,ta);qs='';s.m_m('t');if(s.p_r)s.p_r("
+");s.referrer=''}s.sq(qs);}else{s.dl(vo);}if(vo)s.pt(s.vl_g,',','vo1',vb);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID=s.ppu=s.pe=s.pev1=s.pev2=s.pev3='';if(s.pg)s.wd.s_lnk=s.wd.s_eo=s.wd.s_link"
+"Name=s.wd.s_linkType='';if(!id&&!s.tc){s.tc=1;s.flushBufferedRequests()}return code};s.tl=function(o,t,n,vo){var s=this;s.lnk=s.co(o);s.linkType=t;s.linkName=n;s.t(vo)};if(pg){s.wd.s_co=function(o)"
+"{var s=s_gi(\"_\",1,1);return s.co(o)};s.wd.s_gs=function(un){var s=s_gi(un,1,1);return s.t()};s.wd.s_dc=function(un){var s=s_gi(un,1);return s.t()}}s.ssl=(s.wd.location.protocol.toLowerCase().inde"
+"xOf('https')>=0);s.d=document;s.b=s.d.body;if(s.d.getElementsByTagName){s.h=s.d.getElementsByTagName('HEAD');if(s.h)s.h=s.h[0]}s.n=navigator;s.u=s.n.userAgent;s.ns6=s.u.indexOf('Netscape6/');var ap"
+"n=s.n.appName,v=s.n.appVersion,ie=v.indexOf('MSIE '),o=s.u.indexOf('Opera '),i;if(v.indexOf('Opera')>=0||o>0)apn='Opera';s.isie=(apn=='Microsoft Internet Explorer');s.isns=(apn=='Netscape');s.isope"
+"ra=(apn=='Opera');s.ismac=(s.u.indexOf('Mac')>=0);if(o>0)s.apv=parseFloat(s.u.substring(o+6));else if(ie>0){s.apv=parseInt(i=v.substring(ie+5));if(s.apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)s.apv="
+"parseFloat(s.u.substring(s.ns6+10));else s.apv=parseFloat(v);s.em=0;if(s.em.toPrecision)s.em=3;else if(String.fromCharCode){i=escape(String.fromCharCode(256)).toUpperCase();s.em=(i=='%C4%80'?2:(i=="
+"'%U0100'?1:0))}s.sa(un);s.vl_l='dynamicVariablePrefix,visitorID,vmk,visitorMigrationKey,visitorMigrationServer,visitorMigrationServerSecure,ppu,charSet,visitorNamespace,cookieDomainPeriods,cookieLi"
+"fetime,pageName,pageURL,referrer,currencyCode';s.va_l=s.sp(s.vl_l,',');s.vl_t=s.vl_l+',variableProvider,channel,server,pageType,transactionID,purchaseID,campaign,state,zip,events,products,linkName,"
+"linkType';for(var n=1;n<76;n++)s.vl_t+=',prop'+n+',eVar'+n+',hier'+n+',list'+n;s.vl_l2=',tnt,pe,pev1,pev2,pev3,resolution,colorDepth,javascriptVersion,javaEnabled,cookiesEnabled,browserWidth,browse"
+"rHeight,connectionType,homepage,plugins';s.vl_t+=s.vl_l2;s.va_t=s.sp(s.vl_t,',');s.vl_g=s.vl_t+',trackingServer,trackingServerSecure,trackingServerBase,fpCookieDomainPeriods,disableBufferedRequests"
+",mobile,visitorSampling,visitorSamplingGroup,dynamicAccountSelection,dynamicAccountList,dynamicAccountMatch,trackDownloadLinks,trackExternalLinks,trackInlineStats,linkLeaveQueryString,linkDownloadF"
+"ileTypes,linkExternalFilters,linkInternalFilters,linkTrackVars,linkTrackEvents,linkNames,lnk,eo,_1_referrer';s.va_g=s.sp(s.vl_g,',');s.pg=pg;s.gl(s.vl_g);if(!ss)s.wds()",
w=window,l=w.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf('MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(un){un=un.toLowerCase();if(l)for(i=0;i<l.length;i++){s=l[i];if(!s._c||s._c=='s_c'){if(s.oun==un)return s;else if(s.fs&&s.sa&&s.fs(s.oun,un)){s.sa(un);return s}}}}w.s_an='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
w.s_sp=new Function("x","d","var a=new Array,i=0,j;if(x){if(x.split)a=x.split(d);else if(!d)for(i=0;i<x.length;i++)a[a.length]=x.substring(i,i+1);else while(i>=0){j=x.indexOf(d,i);a[a.length]=x.subst"
+"ring(i,j<0?x.length:j);i=j;if(i>=0)i+=d.length}}return a");
w.s_jn=new Function("a","d","var x='',i,j=a.length;if(a&&j>0){x=a[0];if(j>1){if(a.join)x=a.join(d);else for(i=1;i<j;i++)x+=d+a[i]}}return x");
w.s_rep=new Function("x","o","n","return s_jn(s_sp(x,o),n)");
w.s_d=new Function("x","var t='`^@$#',l=s_an,l2=new Object,x2,d,b=0,k,i=x.lastIndexOf('~~'),j,v,w;if(i>0){d=x.substring(0,i);x=x.substring(i+2);l=s_sp(l,'');for(i=0;i<62;i++)l2[l[i]]=i;t=s_sp(t,'');d"
+"=s_sp(d,'~');i=0;while(i<5){v=0;if(x.indexOf(t[i])>=0) {x2=s_sp(x,t[i]);for(j=1;j<x2.length;j++){k=x2[j].substring(0,1);w=t[i]+k;if(k!=' '){v=1;w=d[b+l2[k]]}x2[j]=w+x2[j].substring(1)}}if(v)x=s_jn("
+"x2,'');else{w=t[i]+' ';if(x.indexOf(w)>=0)x=s_rep(x,w,t[i]);i++;b+=62}}}return x");
w.s_fe=new Function("c","return s_rep(s_rep(s_rep(c,'\\\\','\\\\\\\\'),'\"','\\\\\"'),\"\\n\",\"\\\\n\")");
w.s_fa=new Function("f","var s=f.indexOf('(')+1,e=f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')a+='\",\"';else if((\"\\n\\r\\t \").indexOf(c)<0)a+=c;s++}return a?'\"'+a+'\"':"
+"a");
w.s_ft=new Function("c","c+='';var s,e,o,a,d,q,f,h,x;s=c.indexOf('=function(');while(s>=0){s++;d=1;q='';x=0;f=c.substring(s);a=s_fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(q){i"
+"f(h==q&&!x)q='';if(h=='\\\\')x=x?0:1;else x=0}else{if(h=='\"'||h==\"'\")q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)+'new Function('+(a?a+',':'')+'\"'+s_fe(c.substring(o+1,e))+'\")"
+"'+c.substring(e+1);s=c.indexOf('=function(')}return c;");
c=s_d(c);if(e>0){a=parseInt(i=v.substring(e+5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10));else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){w.s_c=new Function("un","pg","ss","var s=this;"+c);return new s_c(un,pg,ss)}else s=new Function("un","pg","ss","var s=new Object;"+s_ft(c)+";return s");return s(un,pg,ss)}

;
